二进制到字符串转换

时间:2014-04-24 14:19:24

标签: python string binary typeerror

我对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 个答案:

答案 0 :(得分:0)

你所做的事情有很多错误;鉴于发布的代码中存在其他错误,我不确定您是如何得到您声称拥有的错误的。按顺序阅读功能:

  1. 不要调用自己的变量str,它会阻止您访问同名的内置变量。此外,该变量要么不是str,要么导致TypeError chr(str)
  2. 您无法迭代整数for x in y:;这也是TypeError
  3. (您报告的错误) chr(str)返回长度为1的字符串。这不是&的有效操作数类型,因此TypeError
  4. 尚未定义另一个操作数e,因此它将是NameError
  5. 无论如何,你永远不会再使用g
  6. f - 甚至是什么?
  7. 现在e 已定义
  8. bin(chr(str))永远不会工作 - 再次,chr返回一个字符串,bin将一个数字作为参数。
  9. b = (str)有效,但括号是多余的。
  10. j = (b)相同,print(j)也没有缩进到足以进入循环。
  11. 两者都不是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)
  12. 目前尚不清楚你想要实现的目标。如果您提供了示例输入("二进制数据"?的格式)和输出(以及#34;文本字符串"您想获得吗?)以及您的实际代码和完全错误回溯这可能更容易。


    修改

    根据评论中提供的信息,您似乎正在尝试撤消这些操作:

    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

    请注意,由于功能相反,您必须在尝试返回按位操作之前定义{{1}}