在Python中,我了解到创建像0b01101101
这样的整数将创建一个二进制文字。
假设我的字符串数据类型为"01101101"
,有没有办法将其转换为二进制文字?
示例用法是我将创建一个数据包,缓慢地建立具有重复数据的字节(根据变量设置位)。一旦我有了字符串,我就需要通过串行连接写入原始二进制文件。
是否可以将字符串"01101101"
转换为0b01101101
,因此它是二进制文字。
我的目标的另一个例子,如果它有帮助。是这样我可以动态地动态创建二进制数据,而无需进行大量的按位操作,我认为只需编写一串1和0的字符串就可以了,因为我整理数据然后将其转换为二进制文字。当然,如果有更好的方法,那么很快就会接受改进。
答案 0 :(得分:2)
关于术语的注意事项:二进制文字是一段文本,通常出现在源代码中,因此我在字符串对象中显示了产生相同文本的代码。二进制文字不是数字,但它在Python代码中计算为数字,因此我还显示了用于计算该数字的代码。 0b01101101
和109
是不同的文字(一个二进制,一个十进制),但在评估时,它们给出完全相同的结果,一个等于一百九的整数。
如果要通过串行连接将整数109写为单个字节,那么您要编写的是包含代码109的单个字符,不是二进制文字。
my_string = "01101101"
my_binary_literal = "0b" + my_string
my_string_converted_to_integer = int(my_string, 2)
my_single_character = chr(my_string_converted_to_integer)
assert my_single_character == 'm'
答案 1 :(得分:1)
您可以在字符串到int转换中使用参数base
:
int('01101101', base=2)
# output : 109
# (and 109 in base 10 = 01101101 in base 2)
反向操作,使用bin()
创建一个开头为0b
的字符串:
bin(109)
# output : '0b01101101'
答案 2 :(得分:1)
有:
首先将它转换为int并从那里转换为二进制文字,就像这样
bin(int("01101101", base=2))