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
Python und ByteArrays
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.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?
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
Stefan
Worauf ich mich nicht verlassen würde es gibt auch die Möglichkeit Python mit UCS-4-Unterstützung zu kompilieren.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.
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.Leonidas hat geschrieben:Und UTF-16 ist es sowieso nicht, sondern wie Darii bereits andeutete UCS-2 oder UCS-4.
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