2010-04-24 108 views
5

Tôi cần phải chuyển đổi giá trị char thành hex. Tham khảo bảng Ascii nhưng tôi có một vài ví dụ được liệt kê dưới đây:Cần chuyển đổi chuỗi/char thành giá trị ascii

  • char 1 = 31 2 = 32 3 = 33 4 = 34 5 = 35 A = 41 a = 61 vv

Vì vậy, chuỗi str = "12345"; Cần để có được str chuyển đổi = "3132333435"

Trả lời

7

Tôi nghĩ rằng đây là tất cả các bạn sẽ cần:

string finalValue; 
byte[] ascii = Encoding.ASCII.GetBytes(yourString); 
foreach (Byte b in ascii) 
{ 
    finalValue += b.ToString("X"); 
} 

Thông tin thêm trên MSDN: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Edit: Để Hex:

string finalValue; 
int value; 
foreach (char c in myString) 
{ 
    value = Convert.ToInt32(c); 
    finalValue += value.ToString("X"); 
    // or finalValue = String.Format("{0}{1:X}", finalValue, value); 
} 
// use finalValue 
+1

Bạn cần định dạng sử dụng hex. –

+0

Cảm ơn Matthew, tôi đã chỉnh sửa để bao gồm chuyển đổi hex –

+0

Lúc đầu, tôi không hiểu nhận xét hex, vì vậy tôi đã viết lại nó. Sáng nay SO nói với tôi nhận xét là mới vì vậy tôi nhìn lại, và tôi chỉ quên công cụ sửa đổi chuyển đổi trong ToString(). Vì vậy, đây là hai cách để có được những gì bạn muốn. Nếu tôi đã sử dụng Convert.ToByte, khối thứ hai sẽ là dư thừa! –

2
string.Join("", from c in "12345" select ((int)c).ToString("X")); 
+0

snazzy ... thậm chí không giống C# nữa. – mpen

+0

Đó là một tuyên bố rất thú vị. Tôi không nghĩ rằng những người trong công việc của tôi sẽ hiểu nó (họ đã bị mắc kẹt trong .NET 1.1 cho đến khoảng 6 tháng trước). –

1

Để tải nó trong một dòng và dễ đọc hơn (imo)

var result = "12345".Aggregate("", (res, c) => res + ((byte)c).ToString("X")); 

này trả "3132333435", cũng giống như bạn yêu cầu :)

0
string s = "abc123"; 

foreach (char c in s) { 
    Response.Write((int)c + ","); 
} 
Các vấn đề liên quan