jestem konwersji następujący ciąg To unsigned reprezentacja całkowita:Najkrótszy sposób konwertowania tych bajtów na int w pythonie?
str = '\x00\x00\x00\x00\x00\x00\x01\xFF'
mogę używać struct.unpack('8B', str)
uzyskać reprezentację krotny (0,0,0,0,0,0,1,255)
, ale co to najszybsza/Najprostszym sposobem, aby przekonwertować ten krotki do int?
Teraz, mój kod jest
def unpack_str(s):
i = r = 0
for b in reversed(struct.unpack('8B', s)):
r += r*2**i
i++
return r
Ale to długa i brzydkie, dla takiej prostej funkcji! Musi istnieć lepszy sposób! Czy każdy guru Pythona SO może mi pomóc to przyciąć i python-ify it?
Psst! Twoja funkcja zawsze zwróci zero! Czy widzisz, dlaczego? –
Ponadto, 'i ++' jest nieprawidłową składnią (w przeciwieństwie do równie mało znaczącego, ale bardziej podstępnego '++ i', które działa, ale nie robi nic). – delnan