2008-11-12 11 views
12

Làm cách nào để tạo chuỗi chuỗi thoát trong ký hiệu thập lục phân.C# Xây dựng chuỗi ký hiệu thập lục phân

Ví dụ:

string s = "\x1A"; // this will create the hex-value 1A or dec-value 26 

Tôi muốn để có thể xây dựng các chuỗi với hex-giá trị giữa 00 đến FF như thế này (trong ví dụ 1B này)

string s = "\x" + "1B"; // Unrecognized escape sequence 

Có thể có một cách khác để làm chuỗi thập lục phân ...

+0

Tôi không nghĩ rằng tôi hiểu - trong ví dụ này bạn muốn có một ký tự đơn với mã ansi 26? – Grzenio

+0

\ x và \ u cả hai đều là chuỗi thoát cho các ký tự unicode. ''\ u03A9'' và'' \ x03A9'' cả hai in biểu tượng omaga ('Ω') trên đầu ra của bàn điều khiển. – RBT

Trả lời

19

Bạn không lưu trữ giá trị thập lục phân trong chuỗi.

Bạn có thể, nhưng nó sẽ chỉ là một chuỗi, và sẽ phải được đúc thành một số nguyên hoặc một byte để thực sự đọc giá trị của nó.

Bạn có thể gán một giá trị thập lục phân như một chữ đến một int hoặc một byte mặc dù:

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

Vì vậy, nó dễ dàng có thể vượt qua một thập lục phân đen vào chuỗi của bạn:

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

nào sẽ tạo chuỗi này "126 hex test".

Nhưng tôi không nghĩ đó là những gì bạn muốn?

+0

Cảm ơn, giải thích Byte chính xác là những gì tôi muốn – humcfc

3

Có mã thoát '\ u' cho mã thập lục phân 16 bit mã ký tự unicode.

Console.WriteLine("Look, I'm so happy : \u263A"); 
29

Hãy cố gắng tránh trình tự thoát \x. Thật khó đọc vì nó dừng phụ thuộc vào dữ liệu. Ví dụ, có bao nhiêu sự khác biệt trong nháy mắt giữa hai dây này?

"\x9Good compiler" 
"\x9Bad compiler" 

Trước đây, tab "\ x9" là - chuỗi thoát dừng ở đó vì 'G' không phải là ký tự hex hợp lệ. Trong chuỗi thứ hai, "\ x9Bad" là tất cả chuỗi thoát, để lại cho bạn một số ký tự Unicode ngẫu nhiên và "trình biên dịch".

tôi khuyên bạn sử dụng \ u thoát khỏi chuỗi thay vì:

"\u0009Good compiler" 
"\u0009Bad compiler" 

(Tất nhiên cho tab mà bạn muốn sử dụng \t nhưng tôi hy vọng bạn thấy những gì tôi có nghĩa là ...)

Đây là phần nào ngoài câu hỏi ban đầu của khóa học, nhưng điều đó đã được trả lời rồi :)