Подтвердить что ты не робот

Строка с шестнадцатеричным обозначением С# Build

Как создать строку escape-последовательности в шестнадцатеричной форме.

Пример:

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

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

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

Может быть, есть другой способ создания шестнадцатеричных строк...

4b9b3361

Ответ 1

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

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

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

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

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

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

Что бы создать эту строку "126 hex test".

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

Ответ 2

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

"\x9Good compiler"
"\x9Bad compiler"

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

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

"\u0009Good compiler"
"\u0009Bad compiler"

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

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

Ответ 3

Здесь выдается код "\ u" для шестнадцатеричных кодов символов 16 бит.

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