C # Построить шестнадцатеричную строку обозначения

StackOverflow https://stackoverflow.com/questions/284093

  •  08-07-2019
  •  | 
  •  

Вопрос

Как мне создать строку 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

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

Это было полезно?

Решение

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

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

Однако вы можете присвоить шестнадцатеричное значение в качестве литерала int или byte:

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

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

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

Который создал бы эту строку "126 шестнадцатеричный тест".

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

Другие советы

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

"\x9Good compiler"
"\x9Bad compiler"

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

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

"\u0009Good compiler"
"\u0009Bad compiler"

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

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

Существует экранирующий код '\ u' для шестнадцатеричного 16 бит коды символов в юникоде.

Console.WriteLine( "Look, I'm so happy : \u263A" );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top