我用的是Python3,我不知道这里发生了什么:
x=[0xc2,0x50]
print('----list2bytes------')
for i in bytes(x):
print(i)
s=''
for i in x:
s+=chr(i)
print('----string2bytes----')
for i in s.encode():
print(i)
print('----string2ord------')
for i in s:
print(ord(i))
----列表2字节----
194年
80
----字符串2字节----
195年
130
80
----字符串2或---
194年
80个
为什么字节在字符串.编码()? 你知道吗
这里涉及两个不同的概念:
chr()
函数将在指定的^{character
。您可以查找代码点194 here,它是LATIN CAPITAL LETTER A WITH CIRCUMFLEX
(这里没有意外)。你知道吗.encode()
时,您会得到它的UTF-8
编码字节。这不仅仅是代码点的串联。你知道吗字符
Â
的UTF-8编码有两个字节,因为它的Ucode值大于128。第一个字节是192 + (Ucode-value div 64)
==192 + (194 div 64)
,这也是194
==0xc2
(增加了混乱)。第二个字节是128 + (Ucode-value div 64)
==128 + (194 % 64)
==0x82
。你知道吗因此字符
Â
编码为UTF-8中的0xc2, 0x82
。你知道吗第二个字符的(
P
)Ucode值低于128,所以只是添加了它。因此0xc2, 0x82, 0x50
==194, 130, 80
是编码为UTF-8的整个字符串。你知道吗在UTF-8中,编码点序列
194, 80
编码为194, 130, 80
是完全巧合的,给人的印象是130
只是插入了。ord()
将再次为每个字符提供Unicode代码点。字符LATIN CAPITAL LETTER A WITH CIRCUMFLEX
的Unicode码位的整数表示是194。你知道吗相关问题 更多 >
编程相关推荐