python中十六进制字符串的不同解释

2024-06-28 15:02:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的几天里,我一直在努力理解为什么这段代码会以这样的方式运行:

代码:

file1 = open("input.txt","r")
M = file1.read()
file1.close()
print(M)
print(M.encode("latin"))
print(type(M.encode("latin")))
print("\n-----------------------------\n")
t = "\xAC\x42\x4C\x45\x54\x43\x48\x49\x4E\x47\x4C\x45\x59"
print(t)
print(t.encode("latin"))
print(type(t.encode("latin")))

文件“input.txt”内容:

\xAC\x42\x4C\x45\x54\x43\x48\x49\x4E\x47\x4C\x45\x59

输出:

\xAC\x42\x4C\x45\x54\x43\x48\x49\x4E\x47\x4C\x45\x59
b'\\xAC\\x42\\x4C\\x45\\x54\\x43\\x48\\x49\\x4E\\x47\\x4C\\x45\\x59'
<class 'bytes'>

-----------------------------

¬BLETCHINGLEY
b'\xacBLETCHINGLEY'
<class 'bytes'>

我不明白的是,如果我从文件中读取同一字符串,或者如果我(用手)在变量中复制它,为什么会以两种不同的方式解释同一字符串。 我知道双“\”可能是我将字符串打印到控制台的结果,但我无法理解发生了什么


Tags: file1encodeprintlatinx4cx45x42x47