有没有办法将1&0; s和0的字符串转换为其二进制对应字符串,即不是ASCII

时间:2016-07-29 09:19:35

标签: python binary serial-port

在Python中,我了解到创建像0b01101101这样的整数将创建一个二进制文字。

假设我的字符串数据类型为"01101101",有没有办法将其转换为二进制文字?

示例用法是我将创建一个数据包,缓慢地建立具有重复数据的字节(根据变量设置位)。一旦我有了字符串,我就需要通过串行连接写入原始二进制文件。

是否可以将字符串"01101101"转换为0b01101101,因此它是二进制文字。

我的目标的另一个例子,如果它有帮助。是这样我可以动态地动态创建二进制数据,而无需进行大量的按位操作,我认为只需编写一串1和0的字符串就可以了,因为我整理数据然后将其转换为二进制文字。当然,如果有更好的方法,那么很快就会接受改进。

3 个答案:

答案 0 :(得分:2)

关于术语的注意事项:二进制文字是一段文本,通常出现在源代码中,因此我在字符串对象中显示了产生相同文本的代码。二进制文字不是数字,但它在Python代码中计算为数字,因此我还显示了用于计算该数字的代码。 0b01101101109是不同的文字(一个二进制,一个十进制),但在评估时,它们给出完全相同的结果,一个等于一百九的整数。

如果要通过串行连接将整数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))