[英]Python3 Convert bytes object to int
我有一個從套接字收到的字節對象,我想提取它包含的整數值。
看起來像這樣
input = b'1 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
我試過了
tmp_str = input.decode('ascii').strip()
int(tmp_str)
錯誤:
ValueError: invalid literal for int() with base 10: '1 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
但是, tmp_str
的類型為'str'
,但長度為20
..看起來該對象沒有更改,只是它的某些表示形式已更改。
>>> print(tmp_str)
1
>>> len (tmp_str)
20
>>> type(tmp_str)
<class 'str'>
>>> type(input)
<class 'bytes'>
如何從中提取int?
除非您bytes.strip()
告訴它們,否則str.strip()
和bytes.strip()
不會刪除NUL字節,因為NUL字節不是空格。
但是,您不必將字節解碼為str
,因為int()
可以直接接受bytes
對象。 只需調用bytes.strip()
並告訴它刪除空格和NUL:
int(input.strip(b' \x00')
演示:
>>> input = b'1 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> int(input.strip(b' \x00'))
1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.