比方说,我有整数x(-128 < = x < = 127)。如何将x转换为signed char?如何将int转换为signed char?
我这样做。但我不能。
>>> x = -1
>>> chr(x)
ValueError: chr() arg not in range(256)
比方说,我有整数x(-128 < = x < = 127)。如何将x转换为signed char?如何将int转换为signed char?
我这样做。但我不能。
>>> x = -1
>>> chr(x)
ValueError: chr() arg not in range(256)
在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作为阿什温建议;当你通过它们时,Python会根据需要翻译它们并将它们堆叠在堆栈上。
中的功能。这正是我想要的。谢谢。 – 2014-10-06 03:51:00
它不工作,因为x
不是256介于0和
chr
必须有一个int
介于0和256
@MattDMo从https: //docs.python.org/2/library/functions.html#chr:'参数必须在[0..255]范围内。 – 2014-10-06 03:35:40
@MattDMo在OP中的错误意味着他是**不**使用Py3。 – 2014-10-06 03:37:11
在Python 3,chr()
不转换为int变成一个有符号的字符(Python没有)。 chr()
返回一个具有输入int的序数值的Unicode字符串。
>>> chr(77)
'M'
>>> chr(690)
'ʲ'
的输入可以是一个数字在任何支持的基础上,不只是小数:
>>> chr(0xBAFF)
'뫿'
注:在Python 2,整型必须在0和255,以及将输出一个标准之间(非Unicode)字符串。 Py2中的unichr()
的行为如上。
在'unichr()'的Python 2中。 – 2014-10-06 03:33:48
有点奇怪的是,如果这两者是相同的,那么就没有'from six.moves import chr'。 – 2014-10-06 03:41:13
@ Ashwini正确。我认为在Py3大多数时间:)我更新了我的答案,以解决** **版本 – MattDMo 2014-10-06 03:41:23
Python没有签名字符类型......您打算如何处理它? – mgilson 2014-10-06 03:30:59
@mgilson我想将int保存为signed char类型。所以我可以从C读取它。 – 2014-10-06 03:33:37
我不确定你的意思是“从C读取”,但你可以这样做:'import ctypes; x = ctypes.c_int32(-1)' – 2014-10-06 03:36:49