技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 22799
|
今天有人在群里問(wèn)如何將16進(jìn)制轉(zhuǎn)為2進(jìn)制。當(dāng)時(shí)說(shuō)用HEX2BIN就好了。他說(shuō),位數(shù)比較多時(shí)不行,例如,16位。于是想了想,寫了個(gè)數(shù)組公式給他:
這是一個(gè)16位”f“轉(zhuǎn)的結(jié)果。數(shù)組公式如下:
- {=CONCAT(TEXT(HEX2BIN(MID(A1,ROW(INDIRECT("1:"& LEN(A1))),1)),"0000"))}
復(fù)制代碼 表示的是,先通過(guò)len來(lái)計(jì)算字符串個(gè)數(shù),然后使用indirect函數(shù)將拼接號(hào)的字符串轉(zhuǎn)為對(duì)應(yīng)的單元格地址,然后使用row函數(shù)將單元格地址轉(zhuǎn)為數(shù)值,這時(shí)候再使用mid函數(shù)來(lái)截取,就會(huì)將每個(gè)字符分別放置在對(duì)應(yīng)的行里。
接著使用HEX2BIN函數(shù)對(duì)每行的單個(gè)字符進(jìn)行轉(zhuǎn)換,并通過(guò)text函數(shù)轉(zhuǎn)為長(zhǎng)度為4位數(shù)的字符串。這是因?yàn)槭M(jìn)制中,最大值15轉(zhuǎn)為字符串為4個(gè)1,因此需要這樣設(shè)置。
最后通過(guò)concat將這些字符串進(jìn)行拼接,從而得到最終的結(jié)果。
附件如下,供有需要的版友使用。
如果需要在Access中實(shí)現(xiàn),則需要考慮VBA了。方法類似,做法上有兩種:
1、將0-9A-F部分以窮舉方式分別列出對(duì)應(yīng)的二進(jìn)制字符串,后續(xù),再通過(guò)逐個(gè)字符串匹配,返回所對(duì)應(yīng)的二進(jìn)制字符串,進(jìn)行拼接。
2、A-F通過(guò)ASC方法,寫一個(gè)循環(huán)字符串返回ASCII碼的循環(huán),例如,ASC("A")=65,ASC("F")=70,將這個(gè)ASC碼減去55,恰好等于10-15.接下來(lái)再寫一個(gè)0-15的十六進(jìn)制轉(zhuǎn)二進(jìn)制的方法,調(diào)用即可。最后同樣執(zhí)行拼接。
總體來(lái)說(shuō),方法1相對(duì)簡(jiǎn)單,但略有hard code(硬編碼)之嫌。方法2復(fù)雜一些。
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)
x
|