2010-11-04 41 views
5

ai đó có thể giải thích tại sao làm việc này:Chuỗi định dạng và hex chars

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

Output là:

\x05{0} : \x05INSERT TEXT 

tại sao \ X05 không được thay thế?

+0

Ký tự không phải là hex hoặc bất kỳ thứ gì khác, bạn muốn xuất một char tương ứng với giá trị 5, cũng được biểu thị là \ x05. Bạn nên đánh dấu Người nghe là câu trả lời đúng, vì nó sửa lỗi của bạn. – Jaap

Trả lời

10

Định dạng cho đối số phải được đặt trong trình định dạng định dạng, nếu không bạn chỉ cần chèn chữ "\ x". Như thế này:

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

Đừng nhầm lẫn cách bạn thể hiện mã hex trong mã nguồn với những gì bạn in trong chuỗi định dạng, chúng là những thứ khác nhau.

+0

nhưng điều đó sẽ cho tôi chuỗi "05". Tôi đang cố gắng để có được các ký tự hex duy nhất \ x05 trong chuỗi nhưng tôi không thể đặt nó như là một chữ như nó phải đến từ một biến (ví dụ đã cứng mã hóa 5, trong thực tế là int biến). Đó là lý do tại sao tôi cố gắng để thiết lập một chuỗi định dạng riêng biệt đầu tiên. – user380689

+0

@user: Bạn muốn nó được hiển thị như thế nào? Khi nhận được một số trong dạng thập lục phân của nó, bạn chỉ nhận được các chữ số, không có tiền tố "0x". Nếu bạn muốn bao gồm các tiền tố đó, bạn phải thêm tiền tố đó vào chính mình. –

0

Đây có phải là những gì bạn cần không?

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

Để đặt char char trong chuỗi, chỉ cần đảm bảo rằng trình biên dịch biết đó là char.

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

hoặc bạn có thể bắt đầu với một char thực:

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

Hãy chọn.

Các vấn đề liên quan