2012-09-21 13 views

risposta

19

60 == 0x3C.

Hai già la risposta corretta ma la stai guardando nel modo sbagliato.

0x è il prefisso esadecimale
3C è di 3 x 16 + 12

+0

Grazie, questa è la strada da percorrere. – DropTheCode

10

è possibile utilizzare il metodo BitConverter.ToString per convertire un array di byte a stringa esadecimale:

string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') }); 

o semplicemente:

string hex = Convert.ToByte('<').ToString("x2"); 
+0

Grazie ma ho bisogno di un byte, se dopo la conversione io uso di byte [] b = ASCIIEncoding.ASCII.GetBytes (hex); ottengo un array di byte con 51 e 67 valori. Ho bisogno di 3c. – DropTheCode

+0

Se è necessario un byte, non chiamare '.ToString', semplicemente:' byte b = Convert.ToByte ('<'); '. Anche il metodo 'GetBytes' non fa quello che pensi che faccia. Non si aspetta una stringa esadecimale. Si aspetta una semplice stringa in cui ogni carattere viene convertito in un byte utilizzando la codifica specificata - non ha nulla a che fare con hex. Si dovrebbe fare quanto segue se si desidera ottenere l'array di byte originale da una stringa esadecimale: http: // stackoverflow.it/a/311179/29407 –

3

Si desidera convertire il valore numerico esadecimale utilizzando ToString("x"):

string asHex = b.ToString("x"); 

Tuttavia, essere consapevoli del fatto che il codice per convertire il carattere "<" in un byte funzionerà per quel determinato carattere, ma non funzionerà con caratteri non ANSI (che non rientrano in un byte).

4
char ch2 = 'Z'; 
Console.Write("{0:X} ", Convert.ToUInt32(ch2)); 
5

ottenere 60 (rappresentazione decimale) anziché 3c.

No, non si ottiene alcuna rappresentazione. Si ottiene un byte contenente il valore 60/3c in alcune rappresentazione interna. Quando si lo si guarda, ad esempio quando lo si converte in una stringa (esplicitamente con ToString() o implicitamente), si ottiene la rappresentazione decimale .

Pertanto, è necessario assicurarsi che si esplicitamente convertire il byte a stringa, specificando la base che si desidera. ToString("x"), ad esempio, sarà convertire un numero in un esadecimale rappresentazione:

byte b = Convert.ToByte('<'); 
String hex = b.ToString("x");