0
我是python的初学者,遇到了一章,内容如下:原始字节值与Unicode文本?
在Python 3.X中,普通的str字符串处理Unicode文本(包括ASCII,它只是一种简单的Unicode);一个独特的字节字符串类型表示原始字节值(包括媒体和编码文本);
我明白了什么是Unicode文本,但什么值是原始字节?
我是python的初学者,遇到了一章,内容如下:原始字节值与Unicode文本?
在Python 3.X中,普通的str字符串处理Unicode文本(包括ASCII,它只是一种简单的Unicode);一个独特的字节字符串类型表示原始字节值(包括媒体和编码文本);
我明白了什么是Unicode文本,但什么值是原始字节?
原始字节可以是你希望他们是什么。一个字节被限制为0-255(十六进制00-FF),所以不止一个字节必须被程序解释为有意义的。
给出的字节串b'\x41\x42\x43\x44'
,这可能是一个小端整数
>>> int.from_bytes(raw,'little')
1145258561
>>> hex(int.from_bytes(raw,'little'))
'0x44434241'
或者大结束的整数:
>>> hex(int.from_bytes(raw,'big'))
'0x41424344'
还是一个UTF-8编码的Unicode字符串:
>>> raw.decode('utf8')
'ABCD'
或两个little-endian的16位无符号整数:
>>> struct.unpack('HH',raw)
(16961, 17475)
>>> list(map(hex,struct.unpack('HH',raw)))
['0x4241', '0x4443']
这只是数据。这取决于程序决定数据的含义。
字节字符串可以通过TCP套接字发送或读取或写入到文件中。 Unicode文本不能。它必须先被编码为字节。
如果是的话,可以在媒体和编码的文本,而不是被Unicode文本处理? – Sarang
*编码*文本是字节。 *解码*文本是Unicode。您只能将文件存储在文件(媒体或其他文件)中,并且在读取之后必须知道编码以将其解码为Unicode文本。 –
@Sarang请参阅http://nedbatchelder.com/text/unipain.html和http://www.joelonsoftware.com/articles/Unicode.html以获取更多关于差异的解释。 –