Int đến Char trong C #


96

Cách tốt nhất để chuyển đổi giá trị Int thành Char tương ứng trong Utf16, với điều kiện Int nằm trong phạm vi giá trị hợp lệ là gì?

Câu trả lời:


139
(char)myint;

ví dụ:

Console.WriteLine("(char)122 is {0}", (char)122);

sản lượng:

(char) 122 là z


Đây là một câu trả lời tồi. c = (char) 49 là 1 không phải '1'
nykwil,

10
@nykwil Tôi không thấy có gì sai với câu trả lời của gimel.
Tom Lint

11
@nykwil - Đó là thông tin sai lệch. Console.WriteLine((char)49 == '1');Sẽ cho Đúng . Như ý muốn char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Sử dụng dàn diễn viên này là hoàn toàn tốt. Giải thích của bạn không cung cấp một ví dụ hợp lệ về việc nó không hoạt động. Hơn nữa, Console.WriteLine((char)49 == 1);sai về cơ bản làm cho nhận xét của bạn vô căn cứ.
Travis J

62
int i = 65;
char c = Convert.ToChar(i);

47
Convert.ToChar cuối cùng thực hiện một chuyển đổi rõ ràng dưới dạng "(char) value", trong đó "value" là giá trị int của bạn. Trước khi làm như vậy, nó sẽ kiểm tra để đảm bảo "giá trị" nằm trong khoảng từ 0 đến 0xffff và ném OverflowException nếu không. Việc gọi phương thức bổ sung, kiểm tra giá trị / ranh giới và OverflowException có thể hữu ích, nhưng nếu không, hiệu suất sẽ tốt hơn nếu bạn chỉ sử dụng "(char) value".
Triynko

17

Mặc dù không trả lời chính xác câu hỏi như công thức, nhưng nếu bạn cần hoặc có thể lấy kết quả cuối cùng dưới dạng chuỗi, bạn cũng có thể sử dụng

string s = Char.ConvertFromUtf32(56);

sẽ cung cấp cho bạn cặp UTF-16 thay thế nếu cần, bảo vệ bạn nếu bạn không ở bên ngoài BMP .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.