2012-05-11 13 views
10

Come posso convertire questa stringa in un byte?Come si converte una stringa in byte in C#?

string a = "0x2B"; 

Ho provato questo codice, (byte) (a); ma ha detto:

Non può convertire il tipo stringa di byte ...

E quando ho provato questo codice, e questo Convert.ToByte(a);byte.Parse(a);, ha detto:

stringa di input non è stato in un formato corretto ...

Qual è il codice corretto per questo?

Ma quando sto dichiarandolo per esempio in un array, è accettabile ...

Ad esempio:

byte[] d = new byte[1] = {0x2a}; 

risposta

13

È necessario specificare la base da utilizzare in Convert.ToByte s ince la stringa di input contiene un numero esadecimale:

byte b = Convert.ToByte(a, 16); 
2

Aggiornamento:

Come altri hanno già detto, il mio il suggerimento originale di utilizzare-con NumberStyles.HexNumber in realtà non funzionerà con le stringhe esadecimali con prefisso "0x". La soluzione migliore è utilizzare Convert.ToByte(a, 16) come suggerito in altre risposte.

risposta originale:

Provare a utilizzare il seguente:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture); 
+0

non funzionerà con il prefisso '0x'. – Douglas

+0

Ciò causerebbe un'eccezione se la stringa dovesse essere uguale a 'Pie' dovresti entrare nei dettagli su come evitarlo. Come 'Douglas' spiega che anche questo non funzionerebbe con' Ox' considerando che 'x' sta considerando di non essere valido in questo contesto. –

4

È possibile utilizzare la funzione ToByte della classe Convert helper:

byte b = Convert.ToByte(a, 16); 
5
byte b = Convert.ToByte(a, 16); 
1

È possibile utilizzare UTF8Encoding:

public static byte[] StrToByteArray(string str) 
{ 
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
    return encoding.GetBytes(str); 
} 
+1

Hai frainteso la domanda. – jason

+0

sembra così ... – Frederic

+0

Allora puoi rimuovere la tua risposta. –

Problemi correlati