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.
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.
Antworten:
Sie müssen eine encoding ( System.Text.Encoding
) verwenden, um .NET mitzuteilen, was Sie als Ausgabe erwarten. Zum Beispiel in UTF-16 (= System.Text.Encoding.Unicode
) :
var result = System.Text.Encoding.Unicode.GetBytes(text);
Ermitteln Sie zunächst, welche Codierung Sie möchten: Sie müssen zuerst etwas über Unicode wissen .
Als nächstes herausfinden, was System.Text.Encoding
das entspricht. Meine Core .NET-Refcard beschreibt die meisten gängigen und wie eine Instanz abgerufen wird (z. B. durch eine statische Eigenschaft von Encoding
oder durch Aufrufen von a Encoding.GetEncoding
.
Stellen Sie abschließend fest, ob Sie alle Bytes auf einmal möchten (was die einfachste Arbeitsweise ist - rufen Sie Encoding.GetBytes (Zeichenfolge) einmal auf und Sie sind fertig) oder ob Sie es in Blöcke aufteilen müssen - in diesem Fall ' Ich möchte Encoding.GetEncoder verwenden und dann jeweils ein Bit codieren. Der Encoder sorgt dafür, dass der Status zwischen den Aufrufen erhalten bleibt, falls Sie beispielsweise die Hälfte eines Zeichens abbrechen müssen.
Buffer.BlockCopy
und anzunehmen, dass es das ist, was sie wollen.
Welche Codierung verwenden Sie? Konrad hat es ziemlich schlecht gemacht, aber es gibt andere da draußen und Sie könnten mit dem falschen doofe Ergebnisse erzielen:
byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)
Wo XXX
kann sein:
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
So was:
string test = "text";
byte[] arr = Encoding.UTF8.GetBytes(test);