Python 如何通过input()方法输入字节码,并且仍然将其读取为字节码?

Python 如何通过input()方法输入字节码,并且仍然将其读取为字节码?,python,string,python-3.x,encryption,unicode,Python,String,Python 3.x,Encryption,Unicode,好吧,这会有点奇怪,但我会尽力的。我正在用PyCrypto做一些小型实验项目,我写的一些代码有一些问题。此代码将加密密钥和要加密的消息作为输入,然后输出密钥和加密消息。然而,PyCrypto需要字节码作为其加密功能的输入。因此,当我输出加密消息时,它是字节码。由于AES加密工作的性质,消息内容包含“\x”或“0x”格式的十六进制。这意味着内置的str.decode()方法无法将消息转换回Unicode 我做了一些调查,没有找到解决问题的办法。相反,我尝试通过input()方法将字节码字符串输入到

好吧,这会有点奇怪,但我会尽力的。我正在用PyCrypto做一些小型实验项目,我写的一些代码有一些问题。此代码将加密密钥和要加密的消息作为输入,然后输出密钥和加密消息。然而,PyCrypto需要字节码作为其加密功能的输入。因此,当我输出加密消息时,它是字节码。由于AES加密工作的性质,消息内容包含“\x”或“0x”格式的十六进制。这意味着内置的str.decode()方法无法将消息转换回Unicode

我做了一些调查,没有找到解决问题的办法。相反,我尝试通过input()方法将字节码字符串输入到解密函数中来解决这个问题。但是,这会导致原始字节码消息,例如b'\x85\xee9'被转换为字符串“b'\x85\xee9”。显然,我不能在上面使用str.encode()方法,因为它是我需要的字节码字符串,格式不对。有没有办法将包含字节码的Unicode字符串转换为原始字节码

如果任何人对问题的任何一部分都有解决办法,我会很高兴听到。如果需要任何错误日志,请告诉我


谢谢你的帮助

虽然我通常不建议在任何用户输入上使用
eval()
,但在这种情况下,这可能没问题,因为您只是在试验

win32上的Python 3.6.1(v3.6.1:69c0db5,2017年3月21日,17:54:52)[MSC v.1900 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>inp=输入() “\x85\xee9” >>>数据=eval(输入编码('latin1')) >>>字节(data.encode('latin1')) b'\x85\xee9'
您使用的是Python 2还是Python 3?我使用的是Python 3.6.1我们在这里讨论的是哪种字节码?你有文档链接吗?任何API采用Python字节码似乎都是非常罕见的;我怀疑你用错了词。你到底为什么要把AES输出转换成Unicode?非常感谢。你的回答使我更接近解决办法,但没有解决它。我现在有一个错误来自库本身,而不是python。由于这只是一个实验,我现在不打算进一步研究它,我仍然是python的新手,我觉得在回到这个项目之前我可能应该学习更多,特别是因为我使用的库没有最“noob友好”的文档。谢谢你的时间,你给我展示了一些新的东西来学习@特里利安特:很高兴听到你觉得这有帮助。在Python3中处理字节和字符串可能会很困难,因为它们与上一个版本中的字节和字符串几乎不再相同。在我的回答中,一个重要的优点是,在必要时,您可以将任意字节字符串编码为
'latin1'
,因为这些字符串可以包含任何序列8位值,因此它保留原始数据。还要注意的是,我没有使用“字节码”这个术语,因为这在Python中完全是另一种意思。