Come si converte una stringa in una matrice di byte in .NET?
Domanda
Ho una stringa che devo convertire nell'array equivalente di byte in .NET.
Questo dovrebbe essere facile, ma sto avendo un crampo al cervello.
Soluzione
Devi utilizzare una codifica ( System.Text.Encoding
) per dire a .NET cosa ci si aspetta come output. Ad esempio, in UTF-16 (= System.Text.Encoding.Unicode
) :
var result = System.Text.Encoding.Unicode.GetBytes(text);
Altri suggerimenti
Per prima cosa scopri quale codifica vuoi: devi conoscere un po 'di Unicode prima.
Il prossimo lavoro risolve quale System.Text.Encoding
che corrisponde a. La mia Refcard Core .NET descrive la maggior parte di quelli comuni e come ottenere un'istanza (ad es. una proprietà statica di Encoding
o chiamando un Encoding.GetEncoding
.
Infine, scopri se vuoi tutti i byte in una volta (che è il modo più semplice di lavorare: chiama Encoding.GetBytes (stringa) una volta terminato) o se è necessario suddividerlo in blocchi, nel qual caso dovrai utilizzare Encoding.GetEncoder e quindi codificare un po 'alla volta . L'encoder si occupa di mantenere lo stato tra le chiamate, ad esempio nel caso in cui sia necessario interrompere a metà un carattere.
Quale codifica stai usando? Konrad ha praticamente perso, ma ce ne sono altri là fuori e potresti ottenere risultati sciocchi con quello sbagliato:
byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)
Dove XXX
può essere:
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
In questo modo:
string test = "text";
byte[] arr = Encoding.UTF8.GetBytes(test);