1
我通過串行通信接收字節數組並將字節數組的一部分轉換爲整數。代碼如下:如何在Python中更優雅地將字節數組轉換爲整數
data = conn.recv(40)
print(data)
command = data[0:7]
if(command == b'FORWARD' and data[7] == 3):
value = 0
counter = 8
while (data[counter] != 4):
value = value * 10 + int(data[counter] - 48)
counter = counter + 1
總之,我解壓的bytearray data
起始地址爲8和下去,直到我打的b'\x03'
的定界符。所以我打開一個1到3位數的整數,並將數值放入value
。
這個蠻力方法的作品。但是在Python中有更好的方法嗎?我對這門語言很陌生,並且想要學習更好的方法去做這些事情。
感謝您的代碼。當我嘗試,我得到了以下錯誤: builtins.ValueError發生 消息:無效的文字爲int()與基地10:「b'0'」 – Daanii
我想你說'return int(str(ba [0:i]))'有這個ValueError。如果是這樣,聽起來好像你的'data'(來自'conn.recv')包含四個ASCII字符'b'0'',後面跟着你的分界符。 「b'0'」對於可轉換爲整數的字符串是無效的Python語法。我不清楚你的'conn.recv'發送給你什麼語法。你從規格中知道嗎?它看起來有點像它可能試圖表達某種形式的二進制文字,在這種情況下只是零。您的原始代碼不會引發錯誤,但它會告訴您「值」是49091,我確定這不是意圖。 – mgkrebbs