gpt4 book ai didi

c++ - 在命令行上将 HRESULT 作为字符串传递

转载 作者:行者123 更新时间:2023-11-28 01:09:42 24 4
gpt4 key购买 nike

我需要将 HRESULT 值作为命令行参数传递给程序。我本来打算通过传递十六进制值来做到这一点,例如:

>receiver.exe 0x80048836

我正在尝试使用 wcstol 将此字符串表示形式转换回 HRESULT,例如:

HRESULT hr = wcstol(argv[2], NULL, 16);

但是,原始 HRESULT 的值通常大于 LONG_MAX,因此在 hr 上面的行中最终为 0x7fffffff

那么,两个问题:

  1. 我以为 HRESULTS 只是 32 位整数?所以我不确定如何返回大于 LONG_MAX 的 HRESULT。不过,它似乎在原始程序中运行良好(即 HRESULT 不会溢出)。

  2. 有没有办法绕过 wcstolLONG_MAX 限制?也许该函数的另一个版本与 HRESULT 的实际大小整数相匹配?

谢谢!

最佳答案

查看 wcstoulhttp://msdn.microsoft.com/en-us/library/5k9xb7x1(v=VS.80).aspxHRESULT 确实适合 32 位,但在您给出的示例中,它使用了最高有效位,这被认为类似于有符号整数的符号位。使用 wcstoul 会将其装入无符号长整型。

LONG_MAX0x7FFFFFFF,可以放入 31 个最低有效位的最高位,让最高位清零,但 ULONG_MAX 上升到 0xFFFFFFFF 因为它是无符号的。

关于c++ - 在命令行上将 HRESULT 作为字符串传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4047001/

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