解析十六进制文件并逐字节解码

问题描述

我有一个扩展名为 .brt 的十六进制文件,十六进制值在 00 - FF 范围内。 我想解析文件并在命令提示符中逐字节打印。

我尝试了以下代码行:

file = open("file.brt",encoding='utf-8')
data = file.read()

这给了我以下错误

Exception has occurred: UnicodeDecodeError
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

我理解错误是因为值超过 128。然后我尝试使用 utf-16,这给出了一些随机值。 然后我尝试使用以下代码行:

file = open("file.brt",encoding='ANSI')
data = file.read()
for line in data:
    for char in line:
        print(char.encode('utf-8').hex())

上面的代码正在解析数据,但如果十六进制值大于 128,则会打印一些随机值。例如,如果十六进制值为 FF,则打印 c3bf

解决方法

您可以尝试以二进制模式打开文件,方法是将打开行更改为 open('file','b')。然后您可以以十六进制值处理您的文件。