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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top