簡體   English   中英

Python3將bytes對象轉換為int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM