2016-04-24 5 views
0

Ich habe eine lange Zeichenfolge mit hexadezimalen Zahlen, die UTF-16LE-Zeichen darstellen. Beispiel: "59006500730020007300690072002100"Zeichenfolge von Hexadezimalzahlen in UTF-16-Datei schreiben

Ich muss diese Zeichenfolge in eine UTF-16LE-Datei machen. (Sie wissen, diejenigen, die eine unlesbare Unordnung sind, wenn Sie sie mit dem MS Notepad öffnen) Die Zeichenfolge selbst benötigt keine Konvertierung, es enthält bereits die rohen Hex-Daten, die Sie beim Öffnen einer UTF-16LE-Datei mit einem Hex sehen würden Editor.

Ich habe verschiedene Dinge ausprobiert, aber ich kann Python nicht dazu bringen, die Zeichenfolge nur in eine UTF-16LE-Datei umzuwandeln. Ich habe ursprünglich den Code in Java geschrieben, und dort DatatypeConverter.parseHexBinary(hex_string) tat den Trick.

Irgendwelche Ideen, wie man das in Python macht?

Antwort

2

Dekodieren Sie es in Bytes und schreiben Sie es dann als Binärdatei in eine Datei.

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

funktioniert perfekt, danke! –

0

UTF-16 LE ist nicht in dieser Ausgabe beteiligt, was Sie brauchen, ist nur Paare von hexadezimalen Ziffern in dem entsprechenden Byte zu konvertieren. Sie können mit einem Einzeiler, die leicht zu tun:

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

(wo s ist Ihr string)