[英]Python - How to convert a string from binary to integer list?
我得到了一個像這樣的字符串:
s = "\0x01\0x02\0x01\0x11"
我想獲得該字符串的平均數。 我試過這個:
sum = 0
for d in s:
sum += int(d)
但它說“以 10 為基數的 int() 的文字無效:'\\x08'”:-(
我推薦struct 模塊。
>>> import struct
>>> s = '\x01\x02\x01\x11'
>>> struct.unpack('=4B', s)
(1, 2, 1, 17)
您可以使用 python int()
函數,第一個參數是字符串,第二個參數是數字的基數。
您需要檢查基數,因為您發布的內容看起來像十六進制數(0x0 通常表示十六進制數,另外 02 不是有效的二進制數)。
對於二進制(基數為 2):
num = int("0x11", 2); # num will be 3
對於十六進制(基數 16):
num = int("0x0A", 16); # num will be 10
轉換您的字符串 ("\\0x01\\0x02\\0x01\\0x11"):
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()
將在給定長度為 1 的字符串時為您提供該字符串中字符的代碼點。 你應該能夠在你的代碼中使用 this 而不是int()
,它看起來像這樣:
sum = 0
for d in s:
sum += ord(d)
你可以這樣做:
s = "\0x01\0x02\0x01\0x11"
list = s.split('\0x')
list.remove('')
sum = 0
for d in list:
sum += int(d)
# 15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.