繁体   English   中英

UnicodeDecodeError:“ascii”编解码器无法解码 position 0 中的字节 0xa7:不在序数范围内 (128)

[英]UnicodeDecodeError: 'ascii' codec can't decode byte 0xa7 in position 0: not in ordinal range (128)

我有一个十六进制字符串,表示为包含一些文本的单个字符列表。 当我尝试使用以下命令解码十六进制时:

for counter, i in enumerate(hexadecimal):
    if counter % 2 == 0:
        pass
    else:
        temp_list = hexadecimal[counter:counter + 2]
        hex_string = ''.join(str(x) for x in temp_list)
        bytes_string = bytes.fromhex(hex_string)
        ascii_text += bytes_string.decode('ascii')

它工作正常,但是当它遇到数字 ['A', 7] 时,它给了我这个错误。 我认为这是因为该字符在 ASCII 中不存在,我如何从中制作一个可读的字符?

编辑:

一个示例输入是[6, 1, 6, 2, 6, 3] ,它产生abc为 output。

程序输入为[0, 'F', 3, 4, 3, 0, 2, 'E', 3, 0, 3, 1, 5, 6, 2, 0, 3, 4, 3, 7, 3, 2, 3, 3, 4, 1, 4, 1, 3, 3, 5, 1]产生40.01V 4723AA3Q

如果您希望能够将任何字节表示为可接受的字符,则应使用 Latin-1 或 ISO-8859-1 编码(2 个名称但相同的字符集)。 任何字节都被接受,即使有些不是可打印的字符。 如果存在,表示是相同值(当然最多 255)的 unicode 字符。

对于您的问题, '\xa7'将是 unicode 字符 U+00A7 SECTION SIGN §

所以你只需要改变你的最后一行:

ascii_text += bytes_string.decode('Latin1')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM