Tôi muốn lấy giá trị ASCII của các ký tự trong một chuỗi trong C #.
Nếu chuỗi của tôi có giá trị "9quali52ty3", tôi muốn một mảng có các giá trị ASCII của mỗi ký tự trong số 11 ký tự.
Làm cách nào để nhận giá trị ASCII trong C #?
Tôi muốn lấy giá trị ASCII của các ký tự trong một chuỗi trong C #.
Nếu chuỗi của tôi có giá trị "9quali52ty3", tôi muốn một mảng có các giá trị ASCII của mỗi ký tự trong số 11 ký tự.
Làm cách nào để nhận giá trị ASCII trong C #?
Câu trả lời:
Của MSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Bây giờ bạn có một mảng giá trị ASCII của các byte. Tôi có những thứ sau:
57 113117 97 108 105 53 50 116 121 51
Encoding.ASCII
được cấu hình để phát ra đơn vị mã ASCII cho ký tự thay thế ('?') Cho các ký tự không có trong bộ ký tự ASCII. Các tùy chọn khác — bao gồm ném một ngoại lệ — có sẵn trong Encoding
lớp. Và, tất nhiên, các mã hóa ký tự khác - đặc biệt là UTF-8 - cũng có sẵn; Người ta nên đặt câu hỏi liệu nó có phải là ASCII thực sự được mong muốn hay không.
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
Bạn có nghĩa là bạn chỉ muốn các ký tự chữ cái chứ không phải các chữ số? Vì vậy, bạn muốn "chất lượng" là kết quả? Bạn có thể sử dụng Char.IsLetter hoặc Char.IsDigit để lọc ra từng cái một.
string s = "9quali52ty3";
StringBuilder result = new StringBuilder();
foreach(char c in s)
{
if (Char.IsLetter(c))
result.Add(c);
}
Console.WriteLine(result); // quality
string value = "mahesh";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
for (int i = 0; i < value.Length; i++)
{
Console.WriteLine(value.Substring(i, 1) + " as ASCII value of: " + asciiBytes[i]);
}
Nếu bạn muốn mã ký tự cho từng ký tự trong chuỗi, bạn có thể làm như sau:
char[] chars = "9quali52ty3".ToCharArray();
byte[] asciiBytes = Encoding.ASCII.GetBytes("Y");
foreach (byte b in asciiBytes)
{
MessageBox.Show("" + b);
}
Chương trình này sẽ chấp nhận nhiều hơn một ký tự và xuất ra giá trị ASCII của chúng:
using System;
class ASCII
{
public static void Main(string [] args)
{
string s;
Console.WriteLine(" Enter your sentence: ");
s = Console.ReadLine();
foreach (char c in s)
{
Console.WriteLine((int)c);
}
}
}
Những người trả lời trước đó đã trả lời câu hỏi nhưng chưa cung cấp thông tin mà tiêu đề khiến tôi mong đợi. Tôi có một phương thức trả về một chuỗi một ký tự nhưng tôi muốn một ký tự mà tôi có thể chuyển đổi sang hệ thập lục phân. Đoạn mã sau đây thể hiện những gì tôi nghĩ rằng tôi sẽ tìm thấy với hy vọng nó hữu ích cho người khác.
string s = "\ta£\x0394\x221A"; // tab; lower case a; pound sign; Greek delta;
// square root
Debug.Print(s);
char c = s[0];
int i = (int)c;
string x = i.ToString("X");
c = s[1];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[2];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[3];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
c = s[4];
i = (int)c;
x = i.ToString("X");
Debug.Print(c.ToString() + " " + i.ToString() + " " + x);
Đoạn mã trên xuất như sau vào cửa sổ ngay lập tức:
a£Δ√
một 97 61
£ 163 A3
Δ 916 394
√ 8730 221A
Bạn có thể xóa BOM bằng cách sử dụng:
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
Tôi muốn lấy giá trị ASCII của các ký tự trong một chuỗi trong C #.
Mọi người đều đưa ra câu trả lời trong cấu trúc này. Nếu chuỗi của tôi có giá trị "9quali52ty3", tôi muốn một mảng có các giá trị ASCII của mỗi ký tự trong số 11 ký tự.
nhưng trong giao diện điều khiển, chúng tôi làm việc thẳng thắn vì vậy chúng tôi nhận được một ký tự và in mã ASCII nếu tôi sai, vì vậy hãy sửa câu trả lời của tôi.
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
Tại sao không phải là cách dễ dàng kiểu cũ?
public int[] ToASCII(string s)
{
char c;
int[] cByte = new int[s.Length]; / the ASCII string
for (int i = 0; i < s.Length; i++)
{
c = s[i]; // get a character from the string s
cByte[i] = Convert.ToInt16(c); // and convert it to ASCII
}
return cByte;
}
string nomFile = "9quali52ty3";
byte[] nomBytes = Encoding.ASCII.GetBytes(nomFile);
string name = "";
foreach (byte he in nomBytes)
{
name += he.ToString("X02");
}
`
Console.WriteLine(name);
// bây giờ tốt hơn rồi;)