【发布时间】:2020-03-21 22:34:15
【问题描述】:
我正在做一个项目,在这个项目中我必须使用 python 执行一些字节操作,我想在继续之前了解一些基本原理。
t1 = b"\xAC\x42\x4C\x45\x54\x43\x48\x49\x4E\x47\x4C\x45\x59"
t2 = "\xAC\x42\x4C\x45\x54\x43\x48\x49\x4E\x47\x4C\x45\x59"
print("Adding b character before: ",t1)
print("Using bytes(str): ",bytes(t2,"utf-8"))
print("Using str.encode: ",t2.encode())
特别是,当我运行上面的代码时,我无法理解为什么控制台会打印这个:
C:\Users\Marco\PycharmProjects\codeTest\venv\Scripts\python.exe C:/Users/Marco/PycharmProjects/codeTest/msgPack/temp.py
Adding b character before: b'\xacBLETCHINGLEY'
Using bytes(str): b'\xc2\xacBLETCHINGLEY'
Using str.encode: b'\xc2\xacBLETCHINGLEY'
我想了解的是,为什么如果我使用 bytes() 或 decode ,我会在值前面得到一个额外的 "\xc2" 。这是什么意思?这应该出现吗?如果是这样,如果不使用第一种方法,我怎样才能摆脱它?
【问题讨论】:
-
b不是字符。它是字节文字的一部分。 -
this 问题可能重复。欢迎来到 StackOverflow。一些 unicode 代码点长两个字节,如果使用
utf-8编码,则打印两个字节。
标签: python python-3.x byte decode encode