Python中的字节串

Posted 苏导

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的字节串相关的知识,希望对你有一定的参考价值。

简述

用Python开发一些协议通信相关的程序时,许多时候要用到字节串的概念,即类似于C语言中的字节数组。因为协议在通信的传输过程中,数据以payload的字节流传输,因此Python中的字节串的开发使用需要注意。

b’'的表示的注意

Python中用类似b’\\x09\\x89\\x78’可以表示字节串,实际上b’‘是类似字符串,但是可以用Hex格式表示其中的每个字节的值,这样很直观。
b’\\x’表示的时候,一定要注意\\x只能是一个字节一个字节的表示,有个例子如下:

# 例1:手误造成的有问题的例子
a = b'\\xFE006795'
a[0] --> 254 # 0xFE
a[1] --> 48  # 字符'0'的ASCII码
a[2] --> 48  # 字符'0'的ASCII码
a[3] --> 54  # 字符'6'的ASCII码
a[4] --> 55  # 字符'7'的ASCII码
a[5] --> 57  # 字符'9'的ASCII码
a[6] --> 53  # 字符'5'的ASCII码
a[7] --> index out of range
# 例2:正常使用的例子
b = b'\\xFE\\x00\\x67\\x95'
b[0] --> 254
b[1] --> 0
b[2] --> 103
b[3] --> 149
b[4] --> index out of range

分析:
例1:b’\\xFE006795’,只有加了’\\x’前缀的两个字符’FE’才被认为是Hex格式的字节数据,其后的数据都没有’\\x’前缀,所以被认为是ASCII字符表示
例2:b’\\xFE\\x00\\x67\\x95’其实表示的是一个字节数组,是一种字符串,只是字符串的内容并不是以ASCII码和Unicode码来显示,而是直接显示在内存中的内容。
既然是字符串,那么就可以使用其索引和切片等特性了。

以上是关于Python中的字节串的主要内容,如果未能解决你的问题,请参考以下文章

python字典字符串(json串)字节串之间的转化

如何将一串字节转换为int?

python常用的十进制16进制字符串字节串之间的转换

将字节串解读为打包的二进制数据

将字节串解读为打包的二进制数据

Python bytes类型及用法