Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,键入byte_Python_Types - Fatal编程技术网

Python,键入byte

Python,键入byte,python,types,Python,Types,我从Python开始,但我实际上是基于C/C++的,所以对我来说,思考有点不同。我正在处理嵌入的东西,我需要处理字节。例如,在我的C代码中,我的typedef表示:u8、s8(无符号字符、有符号字符)和类似的u16、s16。但是我如何将这个想法用于Python呢。例如,我需要得到项目的总和0xF0+0xAA,我想得到0x9A而不是0x19A是否存在这样的模块?我不认为,有一个简单的方法可以做到这一点。如果需要8位算术,只需使用255 print hex((0xF0 + 0xAA) & 2

我从Python开始,但我实际上是基于C/C++的,所以对我来说,思考有点不同。我正在处理嵌入的东西,我需要处理字节。例如,在我的C代码中,我的typedef表示:u8、s8(无符号字符、有符号字符)和类似的u16、s16。但是我如何将这个想法用于Python呢。例如,我需要得到项目的总和
0xF0+0xAA
,我想得到
0x9A
而不是
0x19A
是否存在这样的模块?

我不认为,有一个简单的方法可以做到这一点。如果需要8位算术,只需使用255

print hex((0xF0 + 0xAA) & 255)
输出

0x9A

注意:正如切普纳在评论中提到的那样,
hex
仅用于以十六进制表示结果。它与算术无关。

也许你可以使用ctypes

>>> import ctypes
>>> _ = lambda i: int(ctypes.c_uint32(i).value)
>>> hex(_(0xF0 + 0xAA))
'0x19a'
考虑为此使用:

>>> import numpy
>>> a = numpy.array(range(200, 210), dtype=numpy.uint8)
>>> a
array([200, 201, 202, 203, 204, 205, 206, 207, 208, 209], dtype=uint8)
>>> a + a
array([144, 146, 148, 150, 152, 154, 156, 158, 160, 162], dtype=uint8)

请注意,
hex
仅用于以十六进制格式打印输出;它不影响算术。@chepner在回答中补充道:)我知道它不依赖于十六进制格式、二进制格式。。。但我需要的是一个只有1字节大小的类型。因此,如果存在溢出,则不是运行时错误。就像C.@Lodhart Native python没有任何这样的数据类型一样,它支持任意精度的算术运算。我认为这种方式对我来说是最好的解决方案:u8=lambda I:int(ctypes.C_uint8(I).value)s8=lambda I:int(ctypes.C_int8(I).value)