C # Построить строку шестнадцатеричной записи - PullRequest
15 голосов
/ 12 ноября 2008

Как построить строку 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

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

Ответы [ 3 ]

34 голосов
/ 12 ноября 2008

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

"\x9Good compiler"
"\x9Bad compiler"

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

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

"\u0009Good compiler"
"\u0009Bad compiler"

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

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

20 голосов
/ 12 ноября 2008

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

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

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

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

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

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

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

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

4 голосов
/ 12 ноября 2008

Существует escape-код '\ u' для шестнадцатеричного 16 битов кодов символов Unicode.

Console.WriteLine( "Look, I'm so happy : \u263A" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...