[英]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)
您所做的事情有很多错误; 考虑到发布代码中的其他错误,我不确定如何得到您声称的错误。 为了阅读功能:
str
,它会阻止您访问相同名称的内置变量。 另外,该变量不是str
,或者在chr(str)
上引起TypeError
。 for x in y:
迭代for x in y:
的整数for x in y:
这也是TypeError
。 chr(str)
返回长度为一的字符串。 这不是&
的有效操作数类型,因此不是TypeError
。 e
,因此它将是NameError
。 g
了。 f
那甚至是什么? e
已定义! bin(chr(str))
将永远无法工作-再次, chr
返回一个字符串, bin
将一个数字作为参数。 b = (str)
有效,但是括号是多余的。 j = (b)
,它的缩进量也不足以使其进入循环。 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.