在 Python 中构建位串

Building a bit string in Python

作为练习,我正在尝试为自定义的虚拟架构实现一个汇编程序。

我唯一不确定的是如何实际生成位。我的每条机器指令都是 2 个字节长。

例如,假设我确定需要生成以下字节码:

0100000100110001

这是我一次构建指令块的情况,例如,前 3 位是操作码,然后是一些保留位,然后是标志等。

我认为将其构造为文字字符串是最简单的。

如何转换字符串,例如'0100000100110001' 写入相应的位串,然后直接写入文件,不改变字节顺序?

我想我可以使用 ByteArray 构造函数,但我在文档中找不到任何合适的示例。

您可以尝试将带有 python 结构的操作码写入字符串。它允许定义您的值的格式(int8、int16、int32,...)。因此,只需将您的操作码和标志组合到您的 2 字节代码中,然后用 uint16 格式编写。

import struct

outstring = ''

code = opcode << 13
code += flags << 10
code += reg1  << 5
code += reg2 
outstring += struct.pack('H',code)

只需将值移动到正确的位置即可。也许屏蔽可以很好地防止一些错误。最后使用 struct.pack 将它添加到您的输出字符串中。 ('H' 是 unsigned int 16,'h' 是 signed int 16)整个列表在文档中(python struct