我正在查看一些使用cytypes库的代码,并且看到了一些新内容:

print("some_num : %04x" % [a c_uint32 number]) # [] used as placeholder
print("another  : %01x" % [a c_uint8 number])
print("another1 : %02x" % [a c_uint16 number])


我可以说使用%ctype编号与格式表示法有关系,但是我不确定那是什么。任何参考的帮助/指针将不胜感激!

最佳答案

c_uint8使用1个字节(= 8位)。
c_uint16使用2个字节(= 16位)。
c_uint32使用4个字节(= 32位)。


2 hexadecimal digits定义一个字节。这意味着x之前的数字应为c_uint之后的数字的四分之一。这样,所有十六进制数将具有相同的长度。

print("another  : %02x" % [a c_uint8 number])
print("another1 : %04x" % [a c_uint16 number])
print("some_num : %08x" % [a c_uint32 number])


这是一个小测试:

>>> from numpy import iinfo, uint8, uint16, uint32
>>> iinfo(uint8).max
255
>>> '1 byte : %02x' % 0
'1 byte : 00'
>>> '1 byte : %02x' % iinfo(uint8).max
'1 byte : ff'
>>> '2 bytes : %04x' % 0
'2 bytes : 0000'
>>> '2 bytes : %04x' % iinfo(uint16).max
'2 bytes : ffff'
>>> '4 bytes : %08x' % 0
'4 bytes : 00000000'
>>> '4 bytes : %08x' % iinfo(uint32).max
'4 bytes : ffffffff'

关于python - Python中的C数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47266292/

10-11 19:40