gpt4 book ai didi

vba - 7 字节十六进制到十进制转换

转载 作者:行者123 更新时间:2023-12-03 03:20:17 27 4
gpt4 key购买 nike

我需要将 Excel 列中的 7 字节十六进制值转换为相邻列中的十进制等效值。

我有超过 2000 个唯一值需要从十六进制转换为十进制。

我使用了 Excel 的 hex2bin 和 bin2dec 公式。
我发现 Excel 将最不重要的 4 位小数四舍五入。

示例:
7字节十六进制:0x803277323A8904
Excel 输出:36084284544158000
正确的十进制数:36084284544157956

最佳答案

这是 Rick Rothstein's code 的一个小变体

Function HexToDecs(ByVal HexString As String) As String
Dim X As Integer
Dim BinStr As String
Const BinValues = "0000000100100011010001010110011110001001101010111100110111101111"
If Left$(HexString, 2) Like "&[hH]" Then
HexString = Mid$(HexString, 3)
End If
If Len(HexString) <= 23 Then
For X = 1 To Len(HexString)
BinStr = BinStr & Mid$(BinValues, 4 * Val("&h" & Mid$(HexString, X, 1)) + 1, 4)
Next
HexToDecd = CDec(0)
For X = 0 To Len(BinStr) - 1
HexToDecd = HexToDecd + Val(Mid(BinStr, Len(BinStr) - X, 1)) * 2 ^ X
Next
Else
' Number is too big, handle error here
End If
HexToDecs = CStr(HexToDecd)
End Function

enter image description here

注意:

  • UDF()返回整数的字符串表示形式,以避免真实数值的 15 位数字限制。
  • 我选择不以 0x 开头输入字符串

关于vba - 7 字节十六进制到十进制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50814771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com