如何将合法CBOR字符串转换为CBOR字节以支持cbor2.loads解析?
解决CBOR字符串转可解析字节的问题
你的问题出在这个字符串是Python字节对象的字符串表示形式,不是原始字节的UTF-8编码,所以bytes()或.encode('utf-8')这类方法只会把字符串本身转成字节,而不是还原出原始的CBOR字节数据。
直接用ast.literal_eval就能解决:
- 它会安全解析Python字面量,把这个字符串转换成真实的
bytes对象 - 转换后的字节就能被
cbor2.loads正常解析
示例代码:
import ast import cbor2 # 你的原始CBOR字符串 cbor_str = "b'\xa1bip\x186'" # 解析为真实的bytes对象 cbor_bytes = ast.literal_eval(cbor_str) # 解析CBOR数据 parsed_data = cbor2.loads(cbor_bytes) print(parsed_data) # 输出: {'ip': 186}
注意:ast.literal_eval比eval安全,不会执行任意代码,适合处理这种字面量字符串。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

