八进制到hex数字在Excel中
我试图将一个12位数的八进制数转换为二进制
但看起来像Excel的内置函数OCT2Bin不会工作的数字大于517
所以我试图拆分数字并连接它们,但是它不起作用
我试过了
=OCT2BIN(MID(A2,1,2))&OCT2BIN(MID(A2,3,2))&OCT2BIN(MID(A2,5,2))&OCT2BIN(MID(A2,7,2))&OCT2BIN(MID(A2,9,2))&OCT2BIN(MID(A2,11,2))
例如八进制数字的二进制
123456765432
是
1010011100101110111110101100011010
但我的公式正在返回
101011100101110111110101100110100
我知道这个公式不起作用,因为我不应该打破这些数字并连接它们。 但我不知道如何在Excel中处理它
有没有办法将12位八进制数转换为二进制?
连接function是没有问题的,因为八进制数字中的每个数字都代表二进制数字中的三位数字。 你的问题是前导零被忽略,例如在你的例子中34o = 011100,但是前面的0不会被返回,所以你只能连接11100.OCT2BIN函数有另一个参数,你可以确定返回的位数:
OCT2BIN(34) = 11100 OCT2BIN(34, 6) = 011100
作为性能:您可以一次转换3个八进制数字,而不是只有2个。
由于excel-vba
也被标记,所以使用VBA可以解决更一般的问题。
Public Function myDec2Bin(ByVal decValue As Double) As String Select Case decValue Case 0 myDec2Bin = "0" Case 1 myDec2Bin = "1" Case Else myDec2Bin = myDec2Bin(Int(decValue / 2)) & IIf(decValue / 2 = Int(decValue / 2), "0", "1") End Select End Function Public Function myOct2Dec(octValue As String) As Double Dim decValue As Double For i = 0 To Len(octValue) - 1 decValue = decValue + Mid(octValue, i + 1, 1) * (8 ^ (Len(octValue) - 1 - i)) Next myOct2Dec = decValue End Function Public Function myOct2Bin(octValue As String) As String Dim decValue As Double decValue = myOct2Dec(octValue) myOct2Bin = myDec2Bin(decValue) End Function
这些UDF
都可以用作单元格公式,如:
=myOct2Bin(A2)
试试这个,我已经检查了结果