【问题标题】:parse hex file and decode byte by byte解析十六进制文件并逐字节解码
【发布时间】:2021-10-03 21:30:16
【问题描述】:

我有一个扩展名为 .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

【问题讨论】:

  • encoding='utf-8 表示您期望文件中有 字符(UTF-8 编码)。这合适吗? .brt 文件的来源是什么?它可能是二进制格式,所以你应该open 以二进制模式('b'),见docs
  • 什么叫十六进制文件?您可以使用文本编辑器(notepad、notepad++、vi 等)打开它并查看十六进制代码,还是必须使用二进制编辑器打开它才能查看 原始字节的十六进制代码?

标签: python python-3.x codec utf cp1252


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 2020-11-11
    • 2014-12-24
    • 2018-09-27
    • 2019-03-20
    • 2010-12-30
    • 2022-11-16
    • 2013-12-20
    • 2018-08-21
    相关资源
    最近更新 更多