임의의 16 바이트 문자열을 생성했습니다. 다음과 같이 표시됩니다.파이썬에서 무작위 데이터의 16 바이트를 정수로 변환합니다.
b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'
이 값을 (양의 정수)로 변환하고 싶습니다. 파이썬에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
감사합니다.
임의의 16 바이트 문자열을 생성했습니다. 다음과 같이 표시됩니다.파이썬에서 무작위 데이터의 16 바이트를 정수로 변환합니다.
b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'
이 값을 (양의 정수)로 변환하고 싶습니다. 파이썬에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
감사합니다.
파이썬 3.2 이상에서는 int.from_bytes()
를 사용할 수 있습니다
>>> int.from_bytes(b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\', byteorder='little')
122926391642694380673571917327050487990
또한 바이트 순서 '큰'사용할 수 있습니다
>>> int.from_bytes(b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\', byteorder='big')
242210931377951886843917078789492013660
는 2의 보수 표현을 사용하려는 경우도 지정할 수 있습니다. 더 많은 정보 : 파이썬 2와 파이썬 3 모두 https://docs.python.org/3/library/stdtypes.html
해결책 호환 struct.unpack 사용하는 것입니다
import struct
n = b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'
m = struct.unpack("<QQ", n)
res = (m[0] << 64) | m[1]
print(res)
결과 : 298534947350364316483256053893818307030L
의도 엔디 언은 무엇입니까? – kindall
아마도 관련 : http://stackoverflow.com/questions/444591/convert-a-string-of-bytes-into-an-int-python – Logan
@Logan 나는 그 게시물을 보았지만, 나는 왜 이해하지 못한다. 구조체를 사용 하시겠습니까? 그것은 해결책이 될 수 없습니다. – aeduG