바이트를 int로 변환하시겠습니까?
저는 현재 암호화/암호 해독 프로그램을 진행하고 있으며 바이트를 정수로 변환할 수 있어야 합니다.알고 있습니다.
bytes([3]) = b'\x03'
하지만 저는 그 반대의 방법을 찾을 수 없습니다.내가 뭘 심하게 잘못하고 있는 거지?
3.2 이상을 사용하고 있다고 가정하면 다음과 같은 기능이 기본으로 제공됩니다.
int.from_bytes
(bytes
,byteorder
, *,signed=False
)...
인수는 바이트와 같은 개체이거나 반복 가능한 생성 바이트여야 합니다.
인수는 정수를 나타내는 데 사용되는 바이트 순서를 결정합니다.그렇다면
"big"
가장 중요한 바이트는 바이트 배열의 시작 부분에 있습니다.그렇다면"little"
가장 중요한 바이트는 바이트 배열의 끝에 있습니다.호스트 시스템의 기본 바이트 순서를 요청하려면 다음을 사용합니다.sys.byteorder
바이트 순서 값으로 지정합니다.인수는 2의 보어가 정수를 나타내는 데 사용되는지 여부를 나타냅니다.
## Examples:
int.from_bytes(b'\x00\x01', "big") # 1
int.from_bytes(b'\x00\x01', "little") # 256
int.from_bytes(b'\x00\x10', byteorder='little') # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) #-1024
바이트 목록은 구독 가능합니다(최소한 파이썬 3.6).이렇게 하면 각 바이트의 십진수 값을 개별적으로 검색할 수 있습니다.
>>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist) # b'@\x04\x1a\xa3\xff'
>>> for b in bytelist:
... print(b) # 64 4 26 163 255
>>> [b for b in bytelist] # [64, 4, 26, 163, 255]
>>> bytelist[2] # 26
list()
바이트를 int로 변환하는 데 사용할 수 있습니다(파이썬 3.7에서 작동).
list(b'\x03\x04\x05')
[3, 4, 5]
int.from_bytes( bytes, byteorder, *, signed=False )
저는 이 웹사이트의 기능을 사용했습니다. 잘 작동합니다.
https://coderwall.com/p/x6xtxq/convert-bytes-to-int-or-int-to-bytes-in-python
def bytes_to_int(bytes):
result = 0
for b in bytes:
result = result * 256 + int(b)
return result
def int_to_bytes(value, length):
result = []
for i in range(0, length):
result.append(value >> (i * 8) & 0xff)
result.reverse()
return result
버퍼링된 데이터로 작업하는 경우 다음과 같은 이점이 있습니다.
int.from_bytes([buf[0],buf[1],buf[2],buf[3]], "big")
의 모든 요소를buf
길이가 8비트입니다.
기존의 해결책을 찾다가 우연히 발견한 오래된 질문.제가 직접 굴려서 공유하려고 생각했습니다. 바이트 목록에서 오프셋을 지정하여 32비트 정수를 만들 수 있기 때문입니다.
def bytes_to_int(bList, offset):
r = 0
for i in range(4):
d = 32 - ((i + 1) * 8)
r += bList[offset + i] << d
return r
#convert bytes to int
def bytes_to_int(value):
return int.from_bytes(bytearray(value), 'little')
bytes_to_int(b'\xa231')
언급URL : https://stackoverflow.com/questions/34009653/convert-bytes-to-int
'programing' 카테고리의 다른 글
git pull origin 마스터와 git pull origin/master 간의 차이 (0) | 2023.05.05 |
---|---|
콘텐츠를 삭제하지 않고 많은 수의 파일을 분할하는 방법 (0) | 2023.05.05 |
명령이 실패하면 어떻게 종료합니까? (0) | 2023.04.25 |
Swift 스크립트에서 터미널 명령을 실행하려면 어떻게 해야 합니까?(예: xcodebuild)입니다. (0) | 2023.04.25 |
네트워크 드라이브의 UNC 경로를 찾으시겠습니까? (0) | 2023.04.25 |