如何在python中以rb模式只读取字节

问题描述 投票:0回答:1

我正在读取二进制文件,但可以作为字符读取的字节正在被读取为字符。该字节字符与前一个字节合并,一行中的两个或多个字符合并在同一个字节中

#first 24 bytes in the file
\x01\xda\x01\x01\x00\x03\x04\xb0\x02v\x00\x03\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00
#                                   ↑
#                      byte being read as character
#more bytes later in the file
\x01u"\x00\x01\x83U\x00\x01\x91\x88\x00\x01\x9f\xbb\x00\x01\xad\xe6\x00\x01\xbc\x14\x00\x01\xcaB\x00\x01\xd8r\x00\x01\xe6\
                  ↑             ↑
#           bytes with 2 extra characters

我不知道如何解决这个问题

#code that reads the file
f = open('tree.sgi', 'rb')
byteAdressEnd = 24
byte = str(f.read(byteAdressEnd))
python byte
1个回答
0
投票

这就是 python 打印字节的方式。如果打印每个字节的值,您会发现它是正确的值。如果您希望它将所有字符打印为十六进制值(如您所愿),您可以使用此函数来打印它:

def printBytes(data: bytes):
    for b in data:
        print(f'\\{hex(b)[1:]}', end="")
    print()
© www.soinside.com 2019 - 2024. All rights reserved.