我正在尝试将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位八进制数转换为二进制数?
答案 0 :(得分:4)
由于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)
答案 1 :(得分:3)
连接函数没有问题,因为八进制数中的每个数字都代表二进制的3位数。 你的问题是省略了前导零,例如在您的示例中34o = 011100但是没有返回第一个0,因此您只连接11100. OCT2BIN函数有另一个参数,您可以在其中确定返回的位数:
OCT2BIN(34) = 11100
OCT2BIN(34, 6) = 011100
截至表现:您可以一次转换3个八进制数字,而不只是2个。
答案 2 :(得分:2)