it-swarm.com.de

Wie konvertiert man einen String in ein Byte-Array in .NET?

Ich habe eine Zeichenfolge, die ich in das entsprechende Array von Bytes in .NET konvertieren muss.

Das sollte einfach sein, aber ich habe einen Gehirnkrampf.

71
JonStonecash

Sie müssen eine Kodierung verwenden (System.Text.Encoding), um .NET mitzuteilen, was Sie als Ausgabe erwarten. Zum Beispiel in TF-16 (= System.Text.Encoding.Unicode) :

var result = System.Text.Encoding.Unicode.GetBytes(text);
97
Konrad Rudolph

Ermitteln Sie zunächst, welche Codierung Sie verwenden möchten: Sie müssen zunächst ein bisschen über Unicode kennen.

Als nächstes erarbeiten Sie, welche System.Text.Encoding das entspricht. Meine Core .NET-Refcard beschreibt die meisten gängigen und wie eine Instanz abgerufen werden kann (z. B. durch eine statische Eigenschaft von Encoding oder durch Aufrufen einer Encoding.GetEncoding .

Abschließend überlegen Sie, ob Sie alle Bytes auf einmal haben möchten (dies ist die einfachste Art zu arbeiten - rufen Sie Encoding.GetBytes (string) einmal auf und Sie sind fertig) oder ob Sie es aufteilen müssen Chunks - in diesem Fall möchten Sie Encoding.GetEncoder verwenden und dann jeweils ein Bit codieren. Der Encoder sorgt dafür, dass der Status zwischen den Aufrufen erhalten bleibt, wenn Sie beispielsweise eine Zeichenhälfte abbrechen müssen.

41
Jon Skeet

Welche Codierung verwenden Sie? Konrad hat es so ziemlich geschafft, aber es gibt andere da draußen, und Sie könnten mit dem falschen Ergebnis doofe Ergebnisse erzielen:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)

Wobei XXX sein kann:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
18
swilliams

So was:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);
8
Igal Tabachnik