C # Crea stringa di notazione esadecimale
Domanda
Come si crea una stringa di sequenza di escape in notazione esadecimale.
Esempio:
string s = "\x1A"; // this will create the hex-value 1A or dec-value 26
Voglio essere in grado di costruire stringhe con valori esadecimali compresi tra 00 e FF in questo modo (in questo esempio 1B)
string s = "\x" + "1B"; // Unrecognized escape sequence
Forse c'è un altro modo di creare stringhe esadecimali ...
Soluzione
Non memorizzi i valori esadecimali nelle stringhe.
Puoi, ma sarebbe solo quella, una stringa, e dovrebbe essere lanciato su un numero intero o un byte per leggerne effettivamente il valore.
Puoi assegnare un valore esadecimale come valore letterale a un int o un byte:
Byte value = 0x0FF;
int value = 0x1B;
Quindi, è facilmente possibile passare un letterale esadecimale nella tua stringa:
string foo = String.Format("{0} hex test", 0x0BB);
Che creerebbe questa stringa "126 hex test".
Ma non credo sia quello che volevi?
Altri suggerimenti
Cerca di evitare la sequenza di escape \ x
. È difficile da leggere perché il punto in cui si ferma dipende dai dati. Ad esempio, quanta differenza c'è a colpo d'occhio tra queste due stringhe?
"\x9Good compiler"
"\x9Bad compiler"
Nel primo, il " \ x9 " è tab - la sequenza di escape si ferma lì perché 'G' non è un carattere esadecimale valido. Nella seconda stringa, " \ x9Bad " è tutta una sequenza di escape, che ti lascia con un carattere Unicode casuale e " compilatore ".
Ti suggerisco di usare invece la sequenza di escape \ u:
"\u0009Good compiler"
"\u0009Bad compiler"
(Naturalmente per tab useresti \ t
ma spero che tu capisca cosa intendo ...)
Questo è in qualche modo a parte la domanda originale ovviamente, ma a cui è già stata data una risposta :)
Esiste un codice di escape "\ u" per i codici di caratteri unicode 16 bit esadecimali.
Console.WriteLine( "Look, I'm so happy : \u263A" );