我正在尝试将十六进制的大整数转换为十进制并VBA保持返回不正确的值.
在VBA,我期待的时候,字符串"&H0A1000043"返回.我已经尝试过,并且有功能,它们都会返回错误的负值.-15938354532701131843CDblCLngVal
Excel HEX2DEC确实返回正确的值.我认为这是VBA函数中的错误我错了吗?
这里的实际核心问题是VBA Long数据类型的有限长度以及VBA数值类型(几乎)全部签名的事实.因此,当您尝试类似于CLng("&H0A1000043")尝试将该数字解释为带符号的32位整数时.在这种情况下,-1593835453是正确的值.您可以检查像这样的十六进制转换器(确保将"二进制类型"设置为带符号的32位.
为了正确地完成此转换,您必须使用更大的数字类型,如LongLong(仅在64位Office中可用).例如CLngLng("&H0A1000043^")
Hex2Dec在这些失败时成功的原因是因为Hex2Dec可能直接转换为字符串,而不必经历数字的中间内部表示,这是它被解释为被签名的地方.
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |