我有一個像字符串:Python - 如何將字符串從二進制轉換爲整數列表?
s = "\0x01\0x02\0x01\0x11"
而且我想要得到該字符串的平均數。我嘗試這樣做:
sum = 0
for d in s:
sum += int(d)
但它說: 「無效的字面INT()基數爲10: '\ X08'」。:-(
我有一個像字符串:Python - 如何將字符串從二進制轉換爲整數列表?
s = "\0x01\0x02\0x01\0x11"
而且我想要得到該字符串的平均數。我嘗試這樣做:
sum = 0
for d in s:
sum += int(d)
但它說: 「無效的字面INT()基數爲10: '\ X08'」。:-(
>>> import struct
>>> s = '\x01\x02\x01\x11'
>>> struct.unpack('=4B', s)
(1, 2, 1, 17)
你可以使用python int()
函數,第一個參數是字符串,第二個是數字的底部。
您需要檢查基地,因爲您發佈的內容看起來像十六進制數字(0x0通常表示十六進制數字,另外02不是有效的二進制數字)。
對於二進制(基二):
num = int("0x11", 2); # num will be 3
十六進制(基數爲16):
num = int("0x0A", 16); # num will be 10
要轉換的字符串( 「\ 0×01 \ 0×02 \ 0×01 \ 0×11」):
numbers = [int(s, base) for s in "\\0x01\\0x02\\0x01\\0x11".split("\\") if len(s)]
如果有base = 16
運行,輸出:numbers = [1, 2, 1, 17]
然後,您可以使用求其平均值:
average = sum(numbers)/len(numbers)
的ord()
意志,給定長度爲一的字符串時,給你在字符串中的字符的代碼點。您應該只能夠在代碼中使用,而不是int()
,這將是這個樣子:
sum = 0
for d in s:
sum += ord(d)
[?你嘗試過什麼(http://whathaveyoutried.com) – Eric 2013-02-28 03:06:10
@Eric見我的編輯:-) – 2013-02-28 03:10:43
你真的希望最後的值是11嗎? – 2013-02-28 03:29:00