我有一个Python字符串,其中包含一些十六进制信息(长度256),如下所示:
Str0 = '04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280'
这个字符串是十六进制的,我们需要使用它创建一个字节字符串。然后为每一行打印一个字节(其数值)
我原以为这样行得通,但事实并非如此:
bytes_object = bytes.fromhex(Str0)
ascii_string = bytes_object.decode('ASCII')
引发的错误是:“ascii”编解码器无法解码位置2:序号不在范围(128)
第一行:
bytes_object = bytes.fromhex(Str0)
提供了一种字节类型,用作原始字节数据/字节数组。 要打印每个字节的数值,您需要做的是:for x in bytes_object : print(x)
若您想要一个数值数组,可以使用[int(x) for x in bytes_object]
在十六进制中,每2个字符代表一个字节。因此,从十六进制字符串中,对应的字节为:
将该字符串转换为字节是可以的,因为字节可以有0-255之间的任何值
问题是您试图将其解码为ASCII码。如果查看ASCII表,您将看到表中的最大值为127(0x7F)。您试图解码的位置[2]处的字节的十六进制值为0x80(十进制值为128),这不是有效的ASCII字符
所以,问题是,您最初的十六进制字符串来自哪里,是什么让您认为它代表有效的ASCII字符
相关问题 更多 >
编程相关推荐