/ / Erhalte eine Zeichenfolge von Bytes bis Null - Python

Holen Sie eine Zeichenfolge von Bytes bis Null - Python

Bei einem Byte-Objekt und einem Index möchte ich eine Zeichenfolge aus den Bytes zwischen dem Index und der nächsten Null (x00) lesen. Beispielsweise:

bstr=b"abcx00defg"
addr_to_str(bstr,0) # "abc"
addr_to_str(bstr,1) # "bc"
addr_to_str(bstr,4) # "defg"

Ich kann Folgendes tun:

def addr_to_str(bstr,i):
return bstr[i:].split(b"x00")[0].decode("utf-8")

Da das Byte-Objekt sehr groß ist, möchte ich eine effiziente Version von addr_to_str. Ich bin neu bei Python und weiß nicht, wie der Interpreter das behandelt split() rufe an, wenn ich nur auf das erste Split-Ergebnis zugreifen möchte. Oder ist das .decode() notwendig?

Frage: Gibt es einen besseren und phytonischeren Weg? addr_to_str()?

Antworten:

1 für die Antwort № 1

Wie wäre es (in Python 2):

def addr_to_str(s, pos):
end = s.find("", pos + 1)
if end != -1:
return s[pos:end]
else:
return s[pos:]

Dadurch wird die Zeichenfolge gescannt, sobald nach einer Null gesucht wird, und anschließend wird ein Segment erstellt.