2016-04-24 10 views
0

私は、UTF-16LE文字の表現である16進数を含む長い文字列を持っています。例: "59006500730020007300690072002100"16進数の文字列をUTF-16ファイルに書き込む

この文字列をUTF-16LEファイルにする必要があります。 (あなたが知っているのは、MS Notepadでそれらを開くと判読不能なものです)文字列自体は変換を必要としません。すでに16進数のUTF-16LEファイルを開いたときに表示される生の16進データを含んでいます編集者。

私はいろいろ試しましたが、文字列をUTF-16LEファイルにするだけではPythonを取得できません。私はもともとJavaでコードを書いていましたが、そこにはDatatypeConverter.parseHexBinary(hex_string)がありました。

Pythonでこれを行う方法はありますか?

答えて

2

これをバイトにデコードし、バイナリとしてファイルに書き込みます。

with open('text.txt', 'wb') as fp: 
    fp.write(binascii.unhexlify('59006500730020007300690072002100')) 
+0

作品完璧(sは、あなたの文字列です)、ありがとう! –

0

UTF-16 LEはこの問題ではまったく関与していません。必要なのは、16進数の対を対応するバイトに変換することだけです。あなたはワンライナーで簡単にそれを行うことができます。

''.join(chr(int(chs[0]+chs[1], 16)) for chs in zip(s[::2], s[1::2])) 

関連する問題