比方說,我有整數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