2008-11-03 7 views
8

Was ist der beste Weg, um ein Array von Bytes, die als TBytes deklariert sind, in Delphi 2009 in eine Unicode-Zeichenkette umzuwandeln? In meinem speziellen Fall hat das Array TBytes bereits UTF-16-kodierte Daten (2 Bytes für jedes Zeichen).Was ist der beste Weg, um TBytes (UTF-16) in eine Zeichenfolge zu konvertieren?

Da TBytes keinen Nullabschluss speichert, wird im Folgenden nur funktionieren, wenn das Array # 0 im Speicher neben ihm hat passiert.

MyString := string(myBytes); 

Wenn nicht, wird das String-Ergebnis am Ende Zufallsdaten (es wahrscheinlich auch eine Lese Verletzung je nachdem, wie lange die dazu führen könnte es dauerte eine # 0 im Speicher zu begegnen).

Wenn ich die ToBytes Funktion zu verwenden, es gibt 't' # 0'e '# 0s' # 0't '# 0, was nicht das, was ich will.

Antwort

13

landete ich

TEncoding.Unicode.GetString(MyByteArray); 
8

StringOf konvertiert TBytes in einen UnicodeString. BytesOf konvertiert einen UnicodeString in TBytes.

+0

Dank Bruce mit, ich meine ursprüngliche Frage überarbeitet, da es nicht spezifisch genug war. Das TBytes-Array ist als utf16-Daten codiert, daher funktioniert ToBytes nicht. –

+0

Süß. So einfach wie 8 Zeichen: StringOf :) – Ampere

4

Wenn Ihr TBytes enthält UTF-16 Zeichen, bei WideStringOf und WideBytesOf aussehen.

Verwandte Themen