字符串格式和十六进制字符

时间:2010-11-04 05:36:06

标签: c# string hex

有人可以解释为什么这不起作用:

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 个答案:

答案 0 :(得分:10)

参数的格式应该在格式说明符中设置,否则你只是插入文字“\ x”。像这样:

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

不要混淆如何在源代码中表示十六进制文字与在格式化字符串中打印的内容,它们是不同的东西。

答案 1 :(得分:6)

要将字面值放在字符串中,只需确保编译器知道它是一个字符。

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

或者你可以从真正的char开始:

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

选择。

答案 2 :(得分:0)

这是你需要的吗?

  int x = 5;
  string f = string.Format("\\x{0:x2}{1}", x, "INSERT TEXT");
  Console.WriteLine(f);