Wie konvertiert man Zeichenketten in Array von Byte und zurück

8
___ tag123string ___ Eine Zeichenfolge ist eine endliche Abfolge von Symbolen, die üblicherweise für Text verwendet wird, manchmal jedoch auch für beliebige Daten. ___ tag123delphixe5 ___ Delphi XE5 ist eine spezielle Version von Delphi, die im September 2013 veröffentlicht wurde. Verwenden Sie immer das [tag: Delphi] -Tag neben diesem Tag. ___ qstnhdr ___ Wie konvertiert man Zeichenketten in Array von Byte und zurück ___ tag123firemonkeyfm3 ___ FireMonkey FM3 ist eine Plattform zum Erstellen von nativen Apps mit mehreren Geräten für iOS, Windows und Mac mit einer einzigen Codebasis. Die folgenden Entwicklungstools von Embarcadero können alle zur Entwicklung solcher Apps verwendet werden: RAD Studio XE4 / Delphi XE4 / C ++ Builder XE4. ___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können. ___ answer21442820 ___

Delphi-Zeichenfolgen werden intern als UTF-16 codiert. Es gab einen großen Hinweis darauf, dass %code% 2 ist.

Der Grund dafür, dass alle Ihre Zeichen eine Ordinalzahl im ASCII-Bereich hatten, ist, dass UTF-16 ASCII in dem Sinne erweitert, dass die Zeichen 0 bis 127 im ASCII-Bereich den gleichen Ordinalwert in UTF-16 haben. Und alle deine Charaktere sind ASCII-Zeichen.

Das heißt, Sie brauchen sich keine Gedanken über den internen Speicher zu machen. Sie konvertieren einfach zwischen String- und Byte-Array mithilfe der Klasse %code% . Um beispielsweise in UTF-8 zu konvertieren, schreiben Sie:

%Vor%

Und in die entgegengesetzte Richtung:

%Vor%

Die Klasse unterstützt viele andere Codierungen, wie in der Dokumentation beschrieben. Aus der Frage, welche Kodierung Sie verwenden müssen, ist nicht klar. Hoffentlich können Sie den Rest von hier aus erledigen.

    
___
Arnold 29.01.2014, 21:06
quelle

1 Antwort

31

Delphi-Zeichenfolgen werden intern als UTF-16 codiert. Es gab einen großen Hinweis darauf, dass SizeOf(Char) 2 ist.

Der Grund dafür, dass alle Ihre Zeichen eine Ordinalzahl im ASCII-Bereich hatten, ist, dass UTF-16 ASCII in dem Sinne erweitert, dass die Zeichen 0 bis 127 im ASCII-Bereich den gleichen Ordinalwert in UTF-16 haben. Und alle deine Charaktere sind ASCII-Zeichen.

Das heißt, Sie brauchen sich keine Gedanken über den internen Speicher zu machen. Sie konvertieren einfach zwischen String- und Byte-Array mithilfe der Klasse TEncoding . Um beispielsweise in UTF-8 zu konvertieren, schreiben Sie:

%Vor%

Und in die entgegengesetzte Richtung:

%Vor%

Die Klasse unterstützt viele andere Codierungen, wie in der Dokumentation beschrieben. Aus der Frage, welche Kodierung Sie verwenden müssen, ist nicht klar. Hoffentlich können Sie den Rest von hier aus erledigen.

    
David Heffernan 29.01.2014, 21:16
quelle