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中的字节串的主要内容,如果未能解决你的问题,请参考以下文章