Python und ByteArrays

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EntonH
User
Beiträge: 8
Registriert: Mittwoch 20. Februar 2008, 10:32

Hallo,

ist es in Python (Version 2.2 oder 2.5) möglich ByteArrays auszulesen, bzw. gibt es eine Python-Klasse, die äquivalent zu Java-Objekten ist und ByteArrays (z.B. java.lang.Object[]) aufnehmen kann?

Hintergrund:
Ich versuche über CORBA von Python mit Java zu kommunizieren, bekomme aber immer eine Fehlermeldung, wenn die Java-Funktion Werte zurückliefert in Form eines CORBA.Any, in dem java.lang.Object[] liegen.

Viele Grüße
EntonH
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Suchst du array?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

EntonH hat geschrieben:ist es in Python (Version 2.2 oder 2.5) möglich ByteArrays auszulesen, bzw. gibt es eine Python-Klasse, die äquivalent zu Java-Objekten ist und ByteArrays (z.B. java.lang.Object[]) aufnehmen kann?
Da ich die Hintergründe deines Anliegens nicht kenne, ist es ein Schuss ins Blaue, aber vielleicht lässt sich das, was du vorhast, ja mit jython realiseren. Wenn es dir darum geht, in Python programmieren zu wollen und mit Java kommunizieren zu müssen, dann könnte das was für dich sein.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Bei Python 2.x ist ein "str" auch aus Bytes zusammengesetzt, kann also als Byte-Array missbraucht werden. Ab Python 3.x ist ein "str" dann (wie in Java oder bei Python 2.x der Typ "unicode") eine UTF-16-kodierte Folge von Unicode-Zeichen und es gibt einen neuen Typ "bytes" für Byte-Arrays.

Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Ab Python 3.x ist ein "str" dann (wie in Java oder bei Python 2.x der Typ "unicode") eine UTF-16-kodierte Folge von Unicode-Zeichen und es gibt einen neuen Typ "bytes" für Byte-Arrays.
Worauf ich mich nicht verlassen würde es gibt auch die Möglichkeit Python mit UCS-4-Unterstützung zu kompilieren.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und UTF-16 ist es sowieso nicht, sondern wie Darii bereits andeutete UCS-2 oder UCS-4.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Leonidas hat geschrieben:Und UTF-16 ist es sowieso nicht, sondern wie Darii bereits andeutete UCS-2 oder UCS-4.
UTF-16 ist ein Superset von UCS-2 (die Unicode-FAQ empfiehlt UCS-2 nicht länger zu benutzen), somit liege ich nicht völlig falsch.

Offenbar unterstützt Python aber nur Unicodezeichen bis U+FFFF einschließlich, wenn man nicht mit UCS-4 kompiliert (was wiederum nahezu UTF-32 entspricht) und verzählt sich somit (da UTF-16 für Zeichen größer U+FFFF zwei "code units" benutzt) ab U+10000.

Am Ende des Tages heißt das aber alles nix anderes, als das mindestens 2 Bytes pro Zeichen verwendet werden und die Länge eines Strings in Bytes nicht der Anzahl der Zeichen entspricht und Strings etwas anderes als Byte-Arrays sind.

Stefan
Antworten