파이썬을 사용하여 바이트 모드로 파일에 바이트 문자열을 쓰려면 어떻게해야합니까?파이썬은 파일에 바이트의 문자열을 작성합니다.
내가 가진 :
['0x28', '0x0', '0x0', '0x0']
어떻게 파일에 0x28을,이 0x0, 0x0으로 0x0으로 쓰기합니까? 이 문자열을 유효한 바이트로 변환하고 쓰는 방법을 모르겠습니다. bytearray()
또는 bytes()
객체에
파이썬을 사용하여 바이트 모드로 파일에 바이트 문자열을 쓰려면 어떻게해야합니까?파이썬은 파일에 바이트의 문자열을 작성합니다.
내가 가진 :
['0x28', '0x0', '0x0', '0x0']
어떻게 파일에 0x28을,이 0x0, 0x0으로 0x0으로 쓰기합니까? 이 문자열을 유효한 바이트로 변환하고 쓰는 방법을 모르겠습니다. bytearray()
또는 bytes()
객체에
지도, 파일에 그 쓰기 :
with open(outputfilename, 'wb') as output:
output.write(bytearray(int(i, 16) for i in yoursequence))
또 다른 옵션은
bytes
값으로 진수 문자열을 켭니다
binascii.unhexlify()
function을 사용하는 것입니다
:
from binascii import unhexlify
with open(outputfilename, 'wb') as output:
output.write(unhexlify(''.join(format(i[2:], '>02s') for i in b)))
여기서는 먼저 0x
부분을 잘라낸 다음 값을 다시 포맷하여 0으로 채우고 전체를 하나의 문자열로 결합해야합니다.
, bytes()
는 바이트 순서로 정수 순서를 설정합니다 : 발전기 표현은 정수로 순서를 변환 할 수 있습니다
>>> bytes([1,65,2,255])
b'\x01A\x02\xff'
(int(x,0)
이 문자열을 정수로 변환하고 있습니다 .
>>> list(int(x,0) for x in ['0x28','0x0','0x0','0x0'])
[40, 0, 0, 0]
들을 결합 :
>>> bytes(int(x,0) for x in ['0x28','0x0','0x0','0x0'])
b'(\x00\x00\x00'
프리픽스 항은 헥스
0x
) 선택
그들를 작성하는 것은 :
>>> L = ['0x28','0x0','0x0','0x0']
>>> with open('out.dat','wb') as f:
... f.write(bytes(int(x,0) for x in L))
...
4
그것은 나를 위해 작동 – zhaozhi