2008-11-12 2 views
12

Как построить строку escape-последовательности в шестнадцатеричной нотации.C# Строка шестнадцатеричной нотации

Пример:

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

Я хочу, чтобы иметь возможность создавать строки с шестнадцатеричных значений от 00 до FF, как это (в данном примере 1В)

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

Может быть, есть еще один способ сделать шестнадцатеричные строки ...

+0

Я не думаю, что понимаю - в этом примере вы хотите иметь один символ с кодом ansi 26? – Grzenio 2008-11-12 14:37:06

+0

\ x и \ u обе являются escape-последовательностями для символов Unicode. `` \ u03A9`` и `` \ x03A9`` печатают символ omaga (`Ω`) на выходе консоли. – RBT 2016-10-15 02:05:57

ответ

19

Вы не храните шестнадцатеричные значения в строках.

Вы можете, но это будет просто строка, и ее нужно будет отличить от целого числа или байта, чтобы действительно прочитать его значение.

Вы можете присвоить значение шестнадцатеричным как буквальное к междунар или байт, хотя:

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

Таким образом, его легко можно передать шестнадцатеричный буквального в вашу строку:

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

Какие создаст эту строку «126 hex test».

Но я не думаю, что это то, что вы хотели?

3

Существует код «\ u» для шестнадцатеричного кода 16 бит коды символов в Юникоде.

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

Попытайтесь избежать последовательности выхода \x. Трудно читать, потому что там, где он останавливается, зависит от данных. Например, насколько сильно разница между этими двумя строками?

"\x9Good compiler" 
"\x9Bad compiler" 

В первом случае «\ x9» есть вкладка - последовательность побега останавливается там, потому что «G» не является допустимым шестнадцатеричным символ. Во второй строке «\ x9Bad» - это все escape-последовательность, оставляя вас с некоторым случайным символом Unicode и «компилятором».

Я предлагаю вам использовать \ и избежать последовательности вместо:

"\u0009Good compiler" 
"\u0009Bad compiler" 

(Конечно, для вкладки вы будете использовать \t, но я надеюсь, что вы понимаете, что я имею в виду ...)

Это несколько в стороне от исходного вопроса, конечно, но об этом уже ответили :)

Смежные вопросы