假设我有整数x(-128< = x< = 127)。如何将x转换为signed char?
我确实喜欢这个。但我不能。
>>> x = -1
>>> chr(x)
ValueError: chr() arg not in range(256)
答案 0 :(得分:2)
在Python中,signed
,unsigned
,char
,int
,long
等之间并没有任何边界。但是,如果您的目标是序列化要与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()
表现如上。