h-6ren">
gpt4 book ai didi

python - 为什么 printf 使用 python 中的 ctypes 不打印有符号的数字

转载 作者:太空宇宙 更新时间:2023-11-03 19:08:59 30 4
gpt4 key购买 nike

我用C编写了以下代码

short a = 0xFFFE;
printf("hex = 0x%X, signed short = %d\n", a & 0xFFFF, a);

Output ---> hex = 0xFFFE, signed short = -2

现在尝试使用 ctypes 在 Python 中执行相同的操作

from ctypes import *
mc = cdll.msvcrt
a = c_short(0xFFFE)
mc.printf("hex = 0x%X, signed short = %d\n", a, a)

Output ----> hex = 0xFFFE, signed short = 65534

我不知道为什么输出不同?有什么想法吗?

最佳答案

printf 未正确调用。使用 %hX%hd 传递短裤。

>>> from ctypes import *
>>> mc = cdll.msvcrt
>>> a=c_short(0xFFFE)
>>> mc.printf('hex=0x%hX, signed short=%hd\n',a,a)
hex=0xFFFE, signed short=-2
28

关于python - 为什么 printf 使用 python 中的 ctypes 不打印有符号的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13676077/

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