我需要将每个字符用00填充为我要转换为十六进制的字符串。有没有办法在python 2.5.2中执行此操作?
e.g。
hextext = "H:\myfilepath.myfileending"
encodedhex = str(hextext.encode('hex'))
print encodedhex
目前正在打印
483a5c6d7966696c65706174682e6d7966696c65656e64696e67
但它应该打印
48003a005c00 etc.
另外,我希望所有角色都是大写字母 - 有没有办法做到这一点?
我也想知道为什么十六进制有时会以这种方式填充00?
答案 0 :(得分:3)
最简单的方法是
>>> hextext = "H:\myfilepath.myfileending"
>>> encodedhex = "".join(c.encode("hex")+"00" for c in hextext)
>>> encodedhex
'48003a005c006d007900660069006c00650070006100740068002e006d007900660069006c00650065006e00640069006e006700'
>>> encodedhex.upper()
'48003A005C006D007900660069006C00650070006100740068002E006D007900660069006C00650065006E00640069006E006700'
但是你确定要输出这个输出而不是UTF-16编码的字符串吗?
>>> hextext.encode("utf-16-le")
'H\x00:\x00\\\x00m\x00y\x00f\x00i\x00l\x00e\x00p\x00a\x00t\x00h\x00.\x00m\x00y\x00f\x00i\x00l\x00e\x00e\x00n\x00d\x00i\x00n\x00g\x00'