Seite 1 von 1

Problem mit struct.unpack

Verfasst: Montag 4. Juli 2005, 08:25
von Martin
Hallo zusammen,

wir haben gerade mit Python angefangen, und sind auf folgendes Problem mit struct.unpack gestoßen:

>>> import struct
>>> strBuffer = u'\x00\xf0\x00\x00\x00\x00\x00\x00'
>>> print "%r" % strBuffer
u'\x00\xf0\x00\x00\x00\x00\x00\x00'
>>> (doorOpen,) = struct.unpack("1x1B6x", strBuffer)
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf0' in position 1: ordinal not in range(128)

Warum funktioniert das nicht mit einem "u" string ?
Wenn man ein 0x70 als zweites Byte setzt, funktionierts.

Irgendwelche Ideen ?

Gibt´s ´ne Möglichkeit den "u" string in ein "r" string zu konvertieren ?
(Hab bis jetzt nichts gefunden).

Der string strBuffer kommt aus einem Interface auf das ich kein SourceZugriff habe.

Danke im vorraus

Martin

Verfasst: Montag 4. Juli 2005, 12:27
von Leonidas
U-Strings sind Unicode-Strings, die kannst du zu normalen Strings mit ustr.encode(encoding) umwandeln. R-Strings sind Raw-Strings, in denen Escape-Sequenzen nicht interpretiert werden, sie werden automatisch in Strings umgewandelt, die statt \ überall \\ haben, aber sonst sind es ganz normale Strings.