有人可以解釋爲什麼這不工作:字符串格式和十六進制字符
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不會被取代?
有人可以解釋爲什麼這不工作:字符串格式和十六進制字符
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不會被取代?
參數的格式應該在格式說明符中設置,否則您只需插入文字「\ x」。就像這樣:
// "5" as a lowercase 2-digit hex
string f = string.Format("{0:x2}{{0}}", 5);
不要混淆你如何表示文本中的源代碼,你會在一個格式化字符串打印的內容十六進制,他們是不同的東西。
但這會給我字符串「05」。我試圖在字符串中得到單個十六進制字符\ x05,但是我不能將它作爲一個字面量來使用,因爲它必須來自一個變量(該例子硬編碼爲5,實際上是int變量)。這就是爲什麼我嘗試首先單獨設置格式字符串。 – user380689 2010-11-04 05:45:58
@user:你想如何顯示它?當以十六進制形式獲取數字時,您只需獲取數字,不需要「0x」前綴。如果你想包含這些前綴,你必須自己添加。 – 2010-11-04 05:48:38
這是你所需要的?
int x = 5;
string f = string.Format("\\x{0:x2}{1}", x, "INSERT TEXT");
Console.WriteLine(f);
要在字符串中放置一個文字字符,只要確保編譯器知道它是一個字符。
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');
隨你挑。
字符不是十六進制或其他任何東西,你想輸出一個字符對應的值爲5,也表示爲\ x05。您應該將Listers先生的答案標記爲正確答案,因爲它可以解決您的問題。 – Jaap 2013-04-04 16:22:07