我把十六进制数转换成ASCII码,然后直接在屏幕上打印出来。但是我没有转到下一行,而是在我的输出控制台上得到'\n'。请你查一下我的密码,告诉我为什么会这样?你知道吗
十六进制值存储在一个名为“hexa”的文件中。你知道吗
fin = open('hexa', 'r')
hexlist = fin.readline().split(' ')
for i in hexlist:
print(str(codecs.decode(i, 'hex')).strip("b'"), end='')
fin.close()
这是我得到的结果:
someRandomChanracters_._.\n\nOnly
但我的预期结果是:
someRandomChanracters_._.
Only
提前感谢您的回复。你知道吗
编辑1: 我想我的问题不是重点。当从十六进制转换为ascii码时,我遇到了这些
a carriage return (0x0d) or a line feed (0x0a)
将打印字符'\n',而不是转到新行。此外,当我遇到单引号(任何特殊字符)时,它们将按以下格式打印:
"'"
"["hello"]" instead of [hello]
文本文件的内容如下:
D8 FF E0 FF 10 00 46 42 11 21 01 00 48 00 27 6E 2E 5F 2E 5F 6F 73 65
我的目标是将这个十六进制文件内容转换成文本格式,而不需要任何额外的引号或字符,如'\n''\t'
我的问题是如何克服这一点?你知道吗
试试这个
输出:
要以换行方式打印
让我们来看看你的代码实际上做了什么。你知道吗
假设是一个两个字符的字符串(比如
0a
),然后将其解码为一个单字节数组。然后以这个(str(...)
)的字符串表示,在我们的示例中,它将是b'\n'
。为什么?值为10的单字节(0x0a)是ASCII中的换行符,因此Python将其显示为\n
,而b''
的内容是显示它是一个字节数组。然后去掉b
和'
:s,然后打印剩下的内容—反斜杠和字母n
。你知道吗与其采用字节数组的字符串表示法(这对于除调试以外的任何事情都是毫无用处的),不如将其解码为字符串。像这样(未经测试)的东西可能有用
但是,一次只能解码一个字节,这意味着任何多字节编码(如UTF-8)都无法工作。更好的方法是一次解码整个字符串(假设字符串不会很长):
(请注意,
for
循环已使用列表理解在print
调用中移动)。你知道吗当您得到这种错误时,您可以使用字符串“split”函数。你知道吗
要按所需方式打印:
相关问题 更多 >
编程相关推荐