AS3: Kann ByteArray wieder seinen Inhalt als string mit zwei bytes pro unicode-Zeichen?
var bytes:ByteArray = new ByteArray;
bytes.writeInt(0);
trace(bytes.length); //prints 4
trace(bytes.toString().length); //prints 4
Wenn ich den oben stehenden code ausführen die Ausgabe deutet darauf hin, dass jedes Zeichen in der Zeichenfolge zurückgegeben, die von toString enthält ein byte aus dem ByteArray. Das ist natürlich toll, wenn Sie wollen, um den Inhalt von ByteArray, aber nicht so toll, wenn Sie senden möchten, dessen Inhalt verschlüsselt einen string und die Größe des Strings ankommt.
Ist es möglich, einen string aus dem ByteArray, wo jedes Zeichen in der Zeichenfolge enthält zwei bytes aus dem ByteArray?
InformationsquelleAutor Anders | 2010-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie interpretieren Ihre
ByteArray
als nur mit shorts. Diese können Sie Lesen zwei Byte zu einem Zeitpunkt und Holen Sie sich eine einzige Zahl, Wert für Sie beide. Als Nächstes können Sie diese zahlen und interpretieren Sie als Zeichen-codes. Schließlich erstellen Sie eineString
aus diesen Zeichen und du bist fertig.Gibt es einen besonderen Umstand zu beachten. Wenn Sie versuchen, das Lesen eines kurzen aus einem
ByteArray
wenn es nur ein byte verbleiben, wird eine Ausnahme geworfen. In diesem Fall sollten Sie anrufenreadByte
mit dem Wert verschoben 8 bit statt. Das ist das gleiche, als wenn die ursprünglicheByteArray
hatte ein zusätzliches 0-byte am Ende. (so dass es sogar in der Länge)Nun, wie für die Dekodierung dieser String... das Zeichen-code der einzelnen Zeichen, und legen Sie Sie in eine neue
ByteArray
als shorts. Es wird identisch sein mit dem original, außer wenn das original hatte eine ungerade Anzahl von bytes, in dem Fall decodiertByteArray
wird ein zusätzliches 0-byte am Ende.In Aktion:
InformationsquelleAutor Gunslinger47
Deine Frage ist ein bisschen verwirrend. Sie haben geschrieben einen 4-byte int, um Ihre ByteArray. Sie habe nicht geschrieben, alle Zeichen (unicode-oder andere). Wenn Sie wollen, um text zu übergeben, schreiben Sie text und geben es als UTF8. Es dauert weniger Platz als mit zwei bytes für jedes Zeichen, zumindest für die meisten westlichen Sprachen.
Aber ganz ehrlich, ich bin mir nicht sicher, ob ich Verstand, was Sie versuchen zu erreichen. Wollen Sie senden, zahlen oder text? Was backend redest du? Sie benötigen ein ByteArray überhaupt?
InformationsquelleAutor Juan Pablo Califano