Формат строки и шестнадцатеричные символы - PullRequest
6 голосов
/ 04 ноября 2010

Может кто-нибудь объяснить, почему это не работает:

string f = string.Format("\\x{0:00}{{0}}", 5);
string o = string.Format(f, "INSERT TEXT");
System.Diagnostics.Debug.WriteLine(f + " : " + o);

Вывод:

\x05{0} : \x05INSERT TEXT

почему \ x05 не заменяется?

Ответы [ 3 ]

10 голосов
/ 04 ноября 2010

Формат аргумента должен быть установлен в спецификаторе формата, в противном случае вы просто вставляете литерал "\ x".Например:

// "5" as a lowercase 2-digit hex
string f = string.Format("{0:x2}{{0}}", 5);

Не путайте, как вы представляете шестнадцатеричный литерал в исходном коде с тем, что вы печатаете в отформатированной строке, это разные вещи.

6 голосов
/ 17 августа 2012

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

string f = string.Format("{0}", (char)5);
string g = string.Format("{0}", Convert.ToChar(5));
string h = string.Format("{0}", char.ConvertFromUtf32(5));

или вы можете начать с реального символа:

string i = string.Format("{0}", '\x05');
string j = string.Format("{0}", '\u0005');
string k = string.Format("{0}", '\U00000005');

Выберите.

0 голосов
/ 04 ноября 2010

Это то, что вам нужно?

  int x = 5;
  string f = string.Format("\\x{0:x2}{1}", x, "INSERT TEXT");
  Console.WriteLine(f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...