0x06_数字表示
-
十六进制
- 十六进制每位表示一个半字节,即4bit
-
二进制中的负数表示
-
原码:最高位表示符号位,其他位存放该数的二进制的绝对值。
-
反码:正数的反码还是等于原码;负数的反码就是它的原码除符号位外,按位取反。
-
补码:正数的补码等于它的原码;负数的补码等于反码+1。补码的严格定义可参考文章计算机组成原理(二)原码、反码、补码中的解释。
-
-
python中format的进阶使用:
-
{<索引>:2f}
: 保留2位有效数字 -
{<索引>:b}
: 转换成二进制 -
{<索引>:o}
: 转换成八进制 -
{<索引>:x}
: 转换成十六进制 -
{<索引>:3}
: 默认占3个字符位置,靠右对齐
-
-
python中与十六进制相关的函数和方法:
-
hex()
: 将一个十进制数字转换成十六进制 -
bin()
: 将一个十进制数字转换成二进制 -
字符串包含诸如
'\x41'
的形式时会自动转换成对应的ascii字符 -
将字符串转化为十六进制编码,在python2中使用
encode('hex')
,在python3中使用encode()
方法后再使用hex()
方法 -
python的struct模块提供字节和其他二进制数据类型的转换。
pack()
方法将任意数据类型转换为bytes数据类型(组包),unpack()
方法将bytes数据类型转换为相应的数据类型(拆包)。-
pack
和unpack
方法有两个参数,第一个参数是处理指令。常见的处理指令如下:-
字节顺序的符号:
-
格式类型的符号:
-
参考文章:
-
-
大端存储与小端存储
-
小端存储:较低的有效字节存放在较低的存储器地址,较高的有效字节存放在较高的存储器地址
-
大端存储:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址
-
示意图:
-
-
-