繁体   English   中英

Python转换类<str>上课<bytes>

[英]Python Convert class<str> to class <bytes>

我在类中有这个字符串值:

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 中做到这一点? 任何将不胜感激。

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 方面会产生成本。

如果您的key变量的值字面上是"b'\\x81*u\\x11\\xe8k\\xef\\xbc\\xc6\\xef\\x9d\\x83\\x9f!\\x0ej'" (而不是r"b'\\x81*u\\x11\\xe8k\\xef\\xbc\\xc6\\xef\\x9d\\x83\\x9f!\\x0ej'" @Jean-FrançoisFabre 的回答假定),您可以使用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'

暂无
暂无

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

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