我试图理解我为同一个unicode字符以及它的字节对象获得的不同长度的含义!!!!!。
我知道第一个长度(Len1)是我的单个unicode字符的ACTUAL长度,第二个长度(Len2)可能是单个unicode字符占用的总字节数,但其余剩余长度是多少(Len3& ; Len4)代表?我正在使用python 3
MyStr = '✮'
print(MyStr," Len1 = ", len(MyStr))
print(bytes(MyStr, 'utf-8'), Len2 = ", len(bytes(MyStr, 'utf-8')))
print(MyStr.encode('unicode_escape'), " Len3 = ", len(MyStr.encode('unicode_escape')))
print(ascii(MyStr), " Len4 = ", len(ascii(MyStr)))
这是输出..
✮ Len1 = 1
b'\xe2\x9c\xae' Len2 = 3
b'\\u272e' Len3 = 6
'\u272e' Len4 = 8
答案 0 :(得分:0)
表示为特定Unicode字符的字节的时间长短取决于您如何表示它,字符是什么以及是否计算引号。
您的角色“✮”需要将三个字节表示为UTF-8字节流。当表示为UTF-8时,更常见的'*'只占用一个字节。
您的其他长度表示代表该字符的字符串的长度。由于该字符的顺序可以存储在16位值中,因此只需要4个十六进制数,而转义\u
的两个位置的长度为6。如果你把它变成一个字符串2,就会计算额外的报价位置。