Python 将十六进制数字字符串写入UTF-16文件
我有一个长字符串,其中包含十六进制数,表示UTF-16LE字符。示例:“590065007300200007300690072002100” 我需要把这个字符串做成一个UTF-16LE文件。(你知道,如果你用MS记事本打开这些字符串,它们会变得不可读)字符串本身不需要任何转换,它已经包含了当你用十六进制编辑器打开UTF-16LE文件时会看到的原始十六进制数据 我尝试了各种方法,但我无法让Python将字符串转换成UTF-16LE文件。我最初是用Java编写代码的,在那里,Python 将十六进制数字字符串写入UTF-16文件,python,encoding,utf-16,Python,Encoding,Utf 16,我有一个长字符串,其中包含十六进制数,表示UTF-16LE字符。示例:“590065007300200007300690072002100” 我需要把这个字符串做成一个UTF-16LE文件。(你知道,如果你用MS记事本打开这些字符串,它们会变得不可读)字符串本身不需要任何转换,它已经包含了当你用十六进制编辑器打开UTF-16LE文件时会看到的原始十六进制数据 我尝试了各种方法,但我无法让Python将字符串转换成UTF-16LE文件。我最初是用Java编写代码的,在那里,DatatypeConv
DatatypeConverter.parseHexBinary(hex_string)
完成了这个技巧
你知道如何在Python中做到这一点吗?将其解码为字节,然后将其作为二进制文件写入文件
with open('text.txt', 'wb') as fp:
fp.write(binascii.unhexlify('59006500730020007300690072002100'))
将其解码为字节,然后将其作为二进制文件写入文件
with open('text.txt', 'wb') as fp:
fp.write(binascii.unhexlify('59006500730020007300690072002100'))
UTF-16 LE根本不涉及这个问题,您需要的只是将成对的十六进制数字转换为相应的字节。使用一个衬里,您可以轻松做到这一点:
''.join(chr(int(chs[0]+chs[1], 16)) for chs in zip(s[::2], s[1::2]))
(其中
s
是您的字符串)UTF-16 LE根本不涉及此问题,您需要的只是将成对的十六进制数字转换为相应的字节。使用一个衬里,您可以轻松做到这一点:
''.join(chr(int(chs[0]+chs[1], 16)) for chs in zip(s[::2], s[1::2]))
(其中s
是您的字符串)