給定一個字節對象和一個索引,我想從索引和下一個空值(\ x00)之間的字節中讀取一個字符串。例如:從字節中獲取一個字符串直到空
bstr=b'abc\x00defg'
addr_to_str(bstr,0) # 'abc'
addr_to_str(bstr,1) # 'bc'
addr_to_str(bstr,4) # 'defg'
我可以做到以下幾點:
def addr_to_str(bstr,i):
return bstr[i:].split(b'\x00')[0].decode('utf-8')
由於bytes對象是非常大的,我想的addr_to_str
一個有效的版本。我是Python新手,不知道解釋器如何處理split()
調用,我只想訪問第一個拆分結果。或者需要.decode()
?
問題:有沒有更好的和pythonic的方式來做addr_to_str()
?
['bytes.split()'](https://docs.python.org/3/library/stdtypes.html?highlight=split#bytes.split)有一個可選的'maxsplit'參數...或者你可以使用['bytes.partition()'](https://docs.python.org/3/library/stdtypes.html?highlight=partition#bytes.partition),它只做一個。 – martineau 2015-02-23 21:18:06