原始字节值与Unicode文本?

时间:2016-09-24 16:36:08

标签: python-3.x unicode byte

我是python的初学者,遇到过一章,内容如下:

在Python 3.X中,普通的str字符串处理Unicode文本(包括ASCII,这只是一种简单的Unicode);不同的字节字符串类型表示原始字节值(包括媒体和编码文本);

我理解什么是unicode文本,但是什么值是原始字节??

1 个答案:

答案 0 :(得分:0)

原始字节可以是您想要的任何内容。单个字节限制为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'

或两个小端16位无符号整数:

>>> struct.unpack('HH',raw)
(16961, 17475)
>>> list(map(hex,struct.unpack('HH',raw)))
['0x4241', '0x4443']

它只是数据。由程序决定数据的含义。

字节字符串可以通过TCP套接字传输或读取或写入文件。 Unicode文本不能。必须先将其编码为字节。