我正在尝试为使用MessagePack的库创建综合单元测试。我想在python中创建可以转入C ++源代码的十六进制转义二进制字符串。我正在创建一个这样的:
在[6]中:umsgpack.packb([0,0,'dummy_void_zeroarg',[]]) 输出[6]:“ \ x94 \ x00 \ x00 \ xc4 \ x12dummy_void_zeroarg \ x90”
但是,看起来生成的十六进制字符串几乎是,但在C ++中不太可用:
错误:十六进制转义序列超出范围 “ \ x94 \ x00 \ x00 \ xc4 \ x12dummy_void_zeroarg \ x90”; ^ ~~~~
原因是编译器尝试将其解析\x12d
为单个值。有没有办法将上述十六进制字符串转换为不包含字母(即仅包含\x
项)的python中的十六进制字符串?
您必须手动执行以下操作:
"'{}'".format(''.join(['\\x{:02x}'.format(ord(c)) for c in message]))
打印结果或将其写入文件:
>>> print "'{}'".format(''.join(['\\x{:02x}'.format(ord(c)) for c in message]))
'\x94\x00\x00\xc4\x12\x64\x75\x6d\x6d\x79\x5f\x76\x6f\x69\x64\x5f\x7a\x65\x72\x6f\x61\x72\x67\x90'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句