【问题标题】:why printf using ctypes from python does not print number as signed为什么使用 python 中的 ctypes 的 printf 不会将数字打印为已签名
【发布时间】:2012-12-03 01:48:41
【问题描述】:

我用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

我不确定为什么输出不同?有什么想法吗?

【问题讨论】:

    标签: python integer ctypes signed


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多