bytes,bytearray
字符串与bytes
编码与解码
bytes.encode(encoding = 'utf - 8',errors = 'stirct') -> bytes
bytes.decode(encoding = "utf - 8",errors = "strict") -> str
bytearray.decode(encoding ="utf - 8",errors = "strict" ) -> str
ASCII
ASCII(American Standard Code for information Interchange,美国信息交换标准代码)是基于拉丁字母的一套单字节编码系统
bytes定义
bytes() 空bytes
bytes(int) 指定字节bytes,被0填充
bytes(iterable_of_ints) -> bytes[0~255] 的int组成的可迭代对象
bytes(string,encodeing[,errors]) -> bytes 等价于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer从一个字节序列或者buffer复制出一个新的额不可变的bytes对象
使用b 前缀定义
只允许基本ASCII使用字符形式 b'abc9'
使用16进制表示b'\x41\x61'
bytes操作
返回16 进制表示的字符串
"abc".encode().hex()
bytearray定义
定义:
bytearray()空bytearray
bytearray(int) 指定字节的bytearray, 被0 填充
bytearray(iterable_of_ints) -> bytearray [0,255]的int组成的可迭代对象
bytearray(string,encoding[,errors]) -> bytearry 近似string.encode() ,不过返回可变对象
bytearray(bytes_or_buffer)从一个字节序列或者buffer复制出一个新的可变的bytearray对象
注意:b前缀定义的类型是bytes类型
bytearray操作
.append(int)尾部追加一个元素
.insert(index,int)在指定索引位置插入元素
.extend(iterable_of_ints) 讲一个可迭代的整数集合追加到当前bytearray
.pop(index = -1)从指定索引上移除元素,默认从尾部移除
.remove(value)找到第一个value移除,找不到抛value error
注意: 上述方法若需要使用int类型,值在[0,255]
int 和 bytes 之间转换
byteorder 指字节序(大端big)
将一个整数表达成一个指定长度的字节数组
i = int.form_bytes(b.'abc', 'big')
print( i , hex()) # 6382179 0x616263
printn(i.to_bytes(3 , 'big')) # b'abc'
所有数据在内存中全部都是2进制的形式,人要理解一个内存中的数据必须先要指定它的类型,否则这个数据是没有意义的
一个字节 = 8位
一个字节0~255
两个字节0~65535
0~255
0~127
大小端的意思是在内存中数据是如何存放的 (大小端代表着高低字节)例如:如果给两个字节ab 是a放高地址呢还是b放高地址呢
低字节放在高地址上,大端模式big
低字节放在小地址上,小端模式little
高低字节的排放顺序~~~
网络上采用大端模式
windows内部采用小端模式
mac用大端模式