gpt4 book ai didi

c# - 是否有现有文档说明为什么 VBA Val 函数的行为与相同代码的 .Net 实现不同(十六进制转换)?

转载 作者:行者123 更新时间:2023-12-03 22:56:33 25 4
gpt4 key购买 nike

我正在从 VBA 转换代码,我需要确认有关 Val 函数行为的证据,以便在 .Net 中忠实地重现它。

问题出在这行VBA代码

lHexNum = Val("&h" & HexNum) ' HexNum = 3B05000004F137

正在产生此输出

323895

应该是这个,

16612521184391480

但我不知道为什么不是。

我在.Net中使用了两种方法,它们都确认了16612521184391480的预期输出(以及使用简单的十六进制计算器)。

Convert.ToInt64(HexNum, 16);

Microsoft.VisualBasic.Conversion.Val("&h" + HexNum);

但是,我仍然需要完美地复制 VBA 程序的实际输出,该程序现在提供 323895 输出。

我能找到的唯一推理是,如果我从 HexNum 中删除 3B05,我就会得到匹配的输出。由于我无法针对足够的实时数据进行测试,以 100% 确定这在所有情况下都有效,因此我无法使用此 hack。

是否有人有关于 Access 2003 应用程序如何以及为何从 Val 函数获取 323895 输出以及为什么匹配的 Microsoft.VisualBasic.Conversion.Val 方法无法获取相同输出的引用或更多信息?

最佳答案

嗯,323895 是(十六进制)0004F137,所以完全猜测这里的问题可能是 Val 您正在使用(或者:您存储值的位置)是 32 位,因此只会为您提供最后 8 个字符(数据的最后 4 个字节)的值

关于c# - 是否有现有文档说明为什么 VBA Val 函数的行为与相同代码的 .Net 实现不同(十六进制转换)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207174/

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