如何将int转换为signed char?

时间:2014-10-06 03:27:20

标签: python

假设我有整数x(-128< = x< = 127)。如何将x转换为signed char?

我确实喜欢这个。但我不能。

>>> x = -1
>>> chr(x)
ValueError: chr() arg not in range(256)

3 个答案:

答案 0 :(得分:2)

在Python中,signedunsignedcharintlong等之间并没有任何边界。但是,如果您的目标是序列化要与C模块,函数或其他任何东西一起使用的数据,您可以使用struct module打包和解压缩数据。例如,b将数据打包为signed char类型。

>>> import struct
>>> struct.pack('bbb', 1, -2, 4)
b'\x01\xfe\x04'

如果您直接与C函数交谈,use ctypes types正如Ashwin建议的那样;当你传递它们时,Python会根据需要对它们进行翻译并将它们堆叠在堆栈中。

答案 1 :(得分:1)

它不起作用,因为x不在0到256之间。

chr必须在0到256之间给出int

答案 2 :(得分:1)

在Python 3中,chr()不会将int转换为带符号的char(Python无论如何都没有)。 chr()返回具有输入int的序数值的Unicode字符串。

>>> chr(77)
'M'
>>> chr(690)
'ʲ'

输入可以是任何支持的基数中的数字,而不仅仅是十进制:

>>> chr(0xBAFF)
'뫿'

注意:在Python 2中,int必须介于0到255之间,并将输出标准(非Unicode)字符串。 Py2中的unichr()表现如上。