2009-10-15 79 views
10

Có một triệu bài đăng trên đây về cách chuyển đổi một ký tự thành giá trị ASCII của nó.
Tôi muốn hoàn toàn ngược lại.
Tôi có một giá trị ASCII được lưu trữ dưới dạng int và tôi muốn hiển thị biểu diễn ký tự ASCII của nó trong một chuỗi.Cách chuyển đổi giá trị ASCII thành một ký tự trong .NET

tức là vui lòng hiển thị mã để chuyển đổi số 65 thành A.

Những gì tôi có hiện nay là String::Format("You typed '{0}'", (char)65)

nhưng kết quả này trong "You typed '65'" trong khi tôi muốn nó được "You typed 'A'"

Tôi đang sử dụng C++/CLI nhưng tôi đoán bất kỳ ngôn ngữ .NET sẽ làm ...

(đã chỉnh sửa sau khi hài hước để cải thiện câu hỏi cho các nhà cung cấp trong tương lai)

+4

Er, "posthumous" có nghĩa là đăng bài tử vong. Tôi muốn một số công nghệ cho phép bạn đạt được chỉnh sửa sau khi chết! – jason

+1

@ Jason là một trong những điều kiện tiên quyết quan trọng nhất của việc chỉnh sửa sau khi chết là bạn phải chết. Tuy nhiên tôi không khuyên bạn nên thử nghiệm này ra! : D (tất nhiên tôi có nghĩa là sau khi trả lời nhưng đó không phải là một từ) – demoncodemonkey

Trả lời

8

Trong C++:

int main(array<System::String ^> ^args) 
{ 
    Console::WriteLine(String::Format("You typed '{0}'", Convert::ToChar(65))); 
    return 0; 
} 
+1

Và chúng ta có một người chiến thắng! Cảm ơn :) – demoncodemonkey

7

Đối với các giá trị ASCII, bạn chỉ có thể cast vào char? (C# :)

char a = (char)65; 

hoặc như là một chuỗi:

string a = ((char)65).ToString(); 
+1

Nó không hiển thị NUL, SOH cho các ký tự số từ 0 đến 9. Có được không? –

+1

@ManishDubey nó sẽ hoạt động tốt; chúng chỉ là các mã kiểm soát không thể in được –

1

Chỉ cần cast nó; không thể đơn giản hơn.

// C# 
int i = 65; 
Console.WriteLine((char)i); 
18

Có nhiều cách, sau đây là một số:

char c = (char)65; 
char c = Convert.ToChar(65); 
string s = new string(65, 1); 
string s = Encoding.ASCII.GetString(new byte[]{65}); 
+1

Hai số cuối cùng phải được nối với '[0]'. Đó là, ví dụ, 'char c = chuỗi mới (65, 1) [0];'. – jason

+1

@ Jason: Có, bạn có thể làm điều đó bạn thực sự muốn nó như là một char. Nếu anh ta sẽ nối nó với các chuỗi khác thì không có điểm nào trong việc tạo ra một chuỗi để tạo ra một char mà sẽ được biến thành một chuỗi một lần nữa trước khi nó có thể được nối. – Guffa

2

Phiên bản phức tạp, tất nhiên, là:

public string DecodeAsciiByte(byte b) { 
    using(var w = new System.IO.StringWriter()) { 
     var bytebuffer = new byte[] { b }; 
     var charbuffer = System.Text.ASCIIEncoding.ASCII.GetChars(bytebuffer); 
     w.Write(charbuffer); 
     return w.ToString(); 
    } 
} 

Tất nhiên, đó là trước khi tôi đọc các câu trả lời bằng phương thức Encoding.GetString. D'oh.

public string DecodeAsciiByte(byte b) { 
    return System.Text.Encoding.ASCII.GetString(new byte[] { b }); 
} 
3
Dim str as string  
str = Convert.ToChar(65).ToString() 
msgbox(str) 
1

Có rất nhiều cách để od này. Nếu bạn muốn họ nhập chữ số liên tiếp với dấu cách và dấu cách, bạn có thể sử dụng một số thông tin như:

string userInput = "123456"; 
    var digits = str.Select(c => Convert.ToInt32(c.ToString())); 
Các vấn đề liên quan