Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 1172|回復(fù): 0
打印 上一主題 下一主題

【數(shù)組公式】十六進(jìn)制轉(zhuǎn)二進(jìn)制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2023-6-19 15:28:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天有人在群里問(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ù)組公式如下:
  1. {=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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 06:23 , Processed in 0.094471 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表