目标
想要获取一个整形数字的二进制表示
本文在 Python 3.10.6 环境下验证通过,如果使用 Python 2 相关版本环境,需要适当调整。
bin 内置函数
看一下官方的解释
Convert an integer number to a binary string prefixed with “0b”. The result is a valid Python expression. If x is not a Python int object, it has to define an index() method that returns an integer. Some examples。
1 | bin(3) |
If prefix “0b” is desired or not, you can use either of the following ways.
1 | format(14, '#b'), format(14, 'b') |
可以看到bin函数返回二进制数字表示的形式是采用了负号,而不是补码的形式。那么如何获得补码形式的二进制表示呢,很简单只需要对数值进行与操作就可以。
1 | bin(-27 & 0b1111111111111111) |
这个例子手工指定了位数,也可以用下面带参数的形式
1 | def bindigits(n, bits): |
Python中的二进制数据类型
Python中提供了三种二进制数据类型:
- bytes
- bytearray
- memoryview
Bytes Object
Bytes对象是不可改变顺序的字节串。
Bytes语法与String类似,只不过需要以b
开头。
1 | # 单引号 |
只有ASCII字符才可以这么写,除此之外的都必须用bytes的形式来写。
由于2个十六进制数字精确地对应于单个字节,所以十六进制数字是用于描述二进制数据的通常使用的格式。
Bytearray Object
bytearray 是bytes对象的可变对象。对于bytearray对象没有专用的字面值语法,只能通过构造函数创建。
memoryview 函数
memoryview() 函数返回给定参数的内存查看对象(memory view)。
代码示例
1 | memoryview(bytearray("abcefg", "utf-8")) v = |