Python 将十六进制数字字符串写入UTF-16文件

Python 将十六进制数字字符串写入UTF-16文件,python,encoding,utf-16,Python,Encoding,Utf 16,我有一个长字符串,其中包含十六进制数,表示UTF-16LE字符。示例:“590065007300200007300690072002100” 我需要把这个字符串做成一个UTF-16LE文件。(你知道,如果你用MS记事本打开这些字符串,它们会变得不可读)字符串本身不需要任何转换,它已经包含了当你用十六进制编辑器打开UTF-16LE文件时会看到的原始十六进制数据 我尝试了各种方法,但我无法让Python将字符串转换成UTF-16LE文件。我最初是用Java编写代码的,在那里,DatatypeConv

我有一个长字符串,其中包含十六进制数,表示UTF-16LE字符。示例:“590065007300200007300690072002100”

我需要把这个字符串做成一个UTF-16LE文件。(你知道,如果你用MS记事本打开这些字符串,它们会变得不可读)字符串本身不需要任何转换,它已经包含了当你用十六进制编辑器打开UTF-16LE文件时会看到的原始十六进制数据

我尝试了各种方法,但我无法让Python将字符串转换成UTF-16LE文件。我最初是用Java编写代码的,在那里,
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
是您的字符串)