我在类中有这个字符串值:
key = "b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'"
我希望将其转换为类
key = b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'
我将如何在Python中做到这一点?任何人都将不胜感激。
答案 0 :(得分:1)
key
的提供者应该固定为存储值,而不是字节的表示
无论如何,要撤消该操作,可以使用相反的方式,即ast.literal_eval
import ast
key = r"b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'"
print(ast.literal_eval(key))
打印:
b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'
请注意,我必须在key
字节文字上使用原始前缀,该前缀可能与您拥有的输入数据匹配。
此修补程序不能替代整个链的适当修补程序:转换为表示形式并将其解析回CPU方面的成本较高。
答案 1 :(得分:0)
如果您的key
变量的值实际上是"b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'"
(而不是@@Jean-FrançoisFabre的答案所假定的r"b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'"
),则可以使用int.to_bytes
来转换字符除去前两个字符和后两个字符(分别是key
和b'
之后,'
中的字节数:
b''.join(ord(c).to_bytes(1, 'big') for c in key[2:-1])
这将返回:
b'\x81*u\x11\xe8k\xef\xbc\xc6\xef\x9d\x83\x9f!\x0ej'