大端 小端 介绍
查看当前系统是大端还是小端:sys.byteorder,Windows是小端的,而小端在我们看来是和常规反向地
关于大小端的知识,推荐几篇文章:
CPU架构决定大小端模式
理解大端与小端字节序
字符编码方式及大端小端
大端小端取决于CPU架构,powerpc,aix、SPARC等是大端;x86架构处理器(Intel、AMD,PC)、arm架构处理器(arm,手机)是小端
大端存储模式是指字或半字的最高字节(Most Significant
Bit,MSB)存放在内存的最低位字节地址上,而字数据的低字节则存放在高地址中。 (1) 数据在寄存器中都是以大端模式次序存放的。
(2) 对于内存中以小端模式存放的数据。CPU存取数成时,小端和大端之间的转换是通过硬件实现的,没有数据加载/存储的开销。
这也是为什么说Windows系统是小端,而Linux可能是大端也可能是小端
相关模块
· binascii : str,bytes 字节串与ascii字符
· hex : str 十进制与十六进制
· bytes : 类 单位为bytes 字节串 hex, decode 字节串与十六进制字符串、字符编码
· int : to_bytes, from_bytes 十进制与字节串,必须指定大小端
· str : encode 字符编码至字节串
· bitstring : 第三方类 单位为bit 比特串 .Bits(bytes) .bin .hex .oct 比特串(切片、索引、搜索)与字节串(输入)与字符串(各种进制输出),在生成时可以指定大小端,索引的元素值是bool值
pip安装
使用手册网页版
使用手册pdf版
· struct : 按照内置算法转换类型至C类型 类型结构与字节串
读取符号位
我就因为需要这个功能才相对字节串甚至比特串操作的,虽然最后没用到专门的模块
最终方法:
0 if b[0]<=128 else 1
# 84.7 ns
b[0]<=128
# 79 ns
b='\xff'
bin(int(b.hex(),16))[2:].rjust(len(b)*8,'0')
# 828 ns
bin(b[0])[2<