我有一个长字符串,其中包含十六进制数字,表示UTF-16LE字符。示例:" 59006500730020007300690072002100"
我需要将此字符串转换为UTF-16LE文件。 (你知道,如果你用MS Notepad打开它们是一个难以理解的混乱)字符串本身不需要任何转换,它已经包含你用十六进制打开UTF-16LE文件时会看到的原始十六进制数据编辑器。
我尝试了各种各样的东西,但是我不能让Python将字符串变成UTF-16LE文件。我最初用Java编写代码,然后DatatypeConverter.parseHexBinary(hex_string)
完成了这个技巧。
有关如何在Python中执行此操作的任何想法吗?
答案 0 :(得分:2)
将其解码为字节,然后将其作为二进制文件写入文件。
with open('text.txt', 'wb') as fp:
fp.write(binascii.unhexlify('59006500730020007300690072002100'))
答案 1 :(得分:0)
在这个问题上根本不涉及UTF-16 LE,你需要的只是将十六进制数字对耦合到相应的字节。您可以使用单行代码轻松完成此操作:
''.join(chr(int(chs[0]+chs[1], 16)) for chs in zip(s[::2], s[1::2]))
(s
是你的字符串)