gpt4 book ai didi

ms-access - 将 HEX 字符串转换为无符号 INT (VBA)

转载 作者:行者123 更新时间:2023-12-04 13:36:47 28 4
gpt4 key购买 nike

在 MSACCESS VBA 中,我通过在字符串前面加上“&h”前缀将十六进制字符串转换为十进制

?CLng("&h1234")
4660
?CLng("&h80000000")
-2147483648

如何将其转换为无符号整数?

使用 CDbl 也不起作用:

?CDbl("&h80000000")
-2147483648

最佳答案

您的版本似乎是最好的答案,但可以缩短一点:

Function Hex2Dbl(h As String) As Double
Hex2Dbl = CDbl("&h0" & h) ' Overflow Error if more than 2 ^ 64
If Hex2Dbl < 0 Then Hex2Dbl = Hex2Dbl + 4294967296# ' 16 ^ 8 = 4294967296
End Function

Double 对于大于 2 ^ 53 - 1 ( about 16 decimal digits ) 的大多数值会有舍入精度误差,但 Decimal 可用于高达 16 ^ 12 的值- 1(Decimal使用16个字节,但数字只有12个)

Function Hex2Dec(h)
Dim L As Long: L = Len(h)
If L < 16 Then ' CDec results in Overflow error for hex numbers above 16 ^ 8
Hex2Dec = CDec("&h0" & h)
If Hex2Dec < 0 Then Hex2Dec = Hex2Dec + 4294967296# ' 2 ^ 32
ElseIf L < 25 Then
Hex2Dec = Hex2Dec(Left$(h, L - 9)) * 68719476736# + CDec("&h" & Right$(h, 9)) ' 16 ^ 9 = 68719476736
End If
End Function

关于ms-access - 将 HEX 字符串转换为无符号 INT (VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40213758/

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