2008-11-12 17 views
12

Cómo construyo una cadena de secuencia de escape en notación hexadecimal.C# Construir notación hexadecimal cadena

Ejemplo:

string s = "\x1A"; // this will create the hex-value 1A or dec-value 26 

Quiero ser capaz de construir cadenas con valores hexadecimales entre 00 a FF como esto (en este ejemplo 1B)

string s = "\x" + "1B"; // Unrecognized escape sequence 

Tal vez hay otra manera de hacer cadenas hexadecimales ...

+0

No creo entender - ¿en este ejemplo quieres tener un solo carácter con el código ansi 26? – Grzenio

+0

\ xy \ u, ambos son secuencias de escape para caracteres Unicode. ''\ u03A9'' y'' \ x03A9'' imprimen el símbolo omaga ('Ω') en la salida de la consola. – RBT

Respuesta

19

No almacena valores hexadecimales en cadenas.

Puede, pero sería solo eso, una cadena, y tendría que ser convertida a un entero o un byte para realmente leer su valor.

Se puede asignar un valor hexadecimal como un literal a un int o un byte sin embargo:

Byte value = 0x0FF; 
int value = 0x1B; 

lo tanto, es fácilmente posible pasar un literal hexadecimal en su cadena:

string foo = String.Format("{0} hex test", 0x0BB); 

Qué crearía esta cadena "126 prueba hexadecimal".

¿Pero no creo que eso es lo que querías?

+0

Gracias, la explicación de Byte era exactamente lo que quería – humcfc

3

Hay un '\ u' código de escape para hexadecimal 16 bits códigos de carácter unicode.

Console.WriteLine("Look, I'm so happy : \u263A"); 
29

Intente evitar la secuencia de escape \x. Es difícil de leer porque donde se detiene depende de los datos. Por ejemplo, ¿cuánta diferencia hay a simple vista entre estas dos cadenas?

"\x9Good compiler" 
"\x9Bad compiler" 

En el primer caso, el "\ x9" es pestaña - la secuencia de escape se detiene allí porque 'G' no es un carácter hexadecimal válido. En la segunda cadena, "\ x9Bad" es toda una secuencia de escape, dejándote con algún carácter Unicode aleatorio y "compilador".

le sugiero que utilice la \ u secuencia de escape en su lugar:

"\u0009Good compiler" 
"\u0009Bad compiler" 

(Por supuesto, para la lengüeta que tendría que utilizar \t pero espero que usted entiende lo que quiero decir ...)

Este es algo aparte de la pregunta original, por supuesto, pero eso ya ha sido respondido :)

Cuestiones relacionadas