1

私は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

なぜ出力が違うのかわかりませんか?何か案が?

4

1 に答える 1

1

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
于 2012-12-04T22:16:24.670 に答える