Excel中的大型十进制到二进制转换 - 仅限公式(无VBA)

时间:2018-04-01 18:25:00

标签: excel excel-formula

我想将大小数(最多2 ^ 18)转换为格式化的二进制数。

我的十进制数字从单元格A3开始。在B3中我输入了

=DEC2HEX($A3, 5)

转换为5位十六进制数。然后,在C3中,我进入了

= HEX2BIN(MID($B3,1,1), 4) & HEX2BIN(MID($B3,2,1), 4) & HEX2BIN(MID($B3,3,1), 4) & HEX2BIN(MID($B3,4,1), 4) & HEX2BIN(MID($B3,5,1), 4)

给我一​​个20位二进制数字。

最后,在D3中,我进入了

=TEXT($C3, "0000 0000 0000 0000 0000")

这一切都运作良好,直到我达到32,769。从那时起,我失去了最不重要的1!

32,763:  0000 0111 1111 1111 1011
32,764:  0000 0111 1111 1111 1100
32,765:  0000 0111 1111 1111 1101
32,766:  0000 0111 1111 1111 1110
32,767:  0000 0111 1111 1111 1111
32,768:  0000 1000 0000 0000 0000
32,769:  0000 1000 0000 0000 0000
32,770:  0000 1000 0000 0000 0010
32,771:  0000 1000 0000 0000 0010
32,772:  0000 1000 0000 0000 0100
32,773:  0000 1000 0000 0000 0100
32,774:  0000 1000 0000 0000 0110
32,775:  0000 1000 0000 0000 0110
32,776:  0000 1000 0000 0000 1000
32,767:  0000 1000 0000 0000 1000

为什么???

我有一个解决方法(这是一个痛苦的因为我的格式更像是“00 000 000 0-00 000 000-0”):

= TEXT(HEX2BIN(MID($B3,1,1), 4), "0000") & " " & TEXT(HEX2BIN(MID($B3,2,1), 4), "0000") & " "  & TEXT(HEX2BIN(MID($B3,3,1), 4), "0000") & " "  & TEXT(HEX2BIN(MID($B3,4,1), 4), "0000") & " "  & TEXT(HEX2BIN(MID($B3,5,1), 4), "0000")

但为什么原来不起作用?

3 个答案:

答案 0 :(得分:1)

您无法使用TEXT功能格式化20位数字,因为Excel的精度限制为15位数。任何更长的东西都会变成零。

您需要使用字符串函数来获取所需的格式,但您只需将C中的字符串拆分为足够小(少于15位)的字符串。

=TEXT(LEFT(C3,8),"0000 0000 ") & TEXT(MID(C3,9,12),"0000 0000 0000")

您可以针对所需的格式执行类似操作,但您发布的内容仅包含18位数字,因此您需要使用正确的格式。

答案 1 :(得分:1)

C3中的公式采用单独的4位二进制数,并将它们连接成一个长字符串。为什么不在此处插入间隙:

= HEX2BIN(MID($B3,1,1), 4) & " " & HEX2BIN(MID($B3,2,1), 4) & " " &HEX2BIN(MID($B3,3,1), 4) & " " & HEX2BIN(MID($B3,4,1), 4) & " " & HEX2BIN(MID($B3,5,1), 4)

或者您可以使用数组公式(在Excel 2016中):

=TEXTJOIN(" ",FALSE,HEX2BIN(MID(B3,ROW($1:$5),1),4))

答案 2 :(得分:0)

晚了几年,但这适用于更大的数字:

=BASE(CellToConvert, 2)

信用:https://stackoverflow.com/a/57826405/2352507