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 ...

È stato utile?

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