繁体   English   中英

二进制到字符串的转换

[英]Binary To String Conversion

我是python的新手,我正在尝试设计一个程序,该程序接受二进制数据的输入并将其转换为文本字符串。 到目前为止,我有以下错误,但始终收到以下错误: TypeError: unsupported operand type(s) for &: 'str' and 'int'有人可以看到我要去哪里了吗? 而且,如果是这样,建议如何解决?

a = int(input("please enter the binary you want to convert: "))

for str in a:
    g = [~(chr(str)&~240)|(e&~240)]
    f = 86
    e = 231
    d = bin(chr(str))
    b = (str)

j=(b)

print(j)

您所做的事情有很多错误; 考虑到发布代码中的其他错误,我不确定如何得到您声称的错误。 为了阅读功能:

  1. 不要调用自己的变量str ,它会阻止您访问相同名称的内置变量。 另外,该变量不是str ,或者在chr(str)上引起TypeError
  2. 您不能for x in y:迭代for x in y:的整数for x in y: 这也是TypeError
  3. (您报告的错误) chr(str)返回长度为一的字符串。 这不是&的有效操作数类型,因此不是TypeError
  4. 尚未定义另一个操作数e ,因此它将是NameError
  5. 无论如何,无论如何您都不会再使用g了。
  6. 还是f那甚至是什么?
  7. 现在e 定义!
  8. bin(chr(str))将永远无法工作-再次, chr返回一个字符串, bin将一个数字作为参数。
  9. b = (str)有效,但是括号是多余的。
  10. j = (b) ,它的缩进量也不足以使其进入循环。
  11. print(j)都不是。

尚不清楚您到底要达到什么目标。 如果您提供示例输入(“二进制数据”是什么格式?)和输出(以及您想获得什么“文本字符串”?)以及实际代码和完整的错误回溯,这可能会更容易。


编辑

使用注释中提供的信息,您似乎正在尝试撤消以下操作:

a = input("please enter the text you want to hide: ")
for ch in a:
##    b = (ch) # this still doesn't do anything!
    c = ord(ch)
##    d = bin(c) # and d is never used
##    e = 231 # e is only used to calculate g
    f = 86
##    g = (((c&240) >> 4)|(e&240)) # which is also never used
    h = (((c&15)|(f&240)))
    j = bin(h)
    print(j)

例如,这将产生( a == 'foo' ):

0b1010110
0b1011111
0b1011111

但是,要将输入'0b1010110'转换为整数,需要为int提供适当的基数:

>>> int('0b1010110', 2)
86

而且您不能遍历整数。 我认为您想要类似的东西:

data = input("please enter the binary you want to convert: ")
for j in data.split():
    h = int(j, 2)
    ...

输入将是例如'0b1010110 0b1011111 0b1011111' ,或一次只输入一个:

h = int(input(...), 2)

请注意,由于功能相反,您必须先定义f 然后再尝试按位操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM