Я хочу отримати значення символів ASCII в рядку на C #.
Якщо мій рядок має значення "9quali52ty3", я хочу масив зі значеннями ASCII кожного з 11 символів.
Як я можу отримати значення ASCII в C #?
Я хочу отримати значення символів ASCII в рядку на C #.
Якщо мій рядок має значення "9quali52ty3", я хочу масив зі значеннями ASCII кожного з 11 символів.
Як я можу отримати значення ASCII в C #?
Відповіді:
Від MSDN
string value = "9quali52ty3";
// Convert the string into a byte[].
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
Тепер у вас є масив значення ASCII байтів. Я отримав наступне:
57 113 117 97 108 105 53 50 116 121 51
Encoding.ASCII
виконано з можливістю випромінювати модуль коду ASCII для символу заміни ('?') Для символів, які відсутні в наборі символів ASCII. Інші параметри - включаючи викидання виключень - доступні в Encoding
класі. І, звичайно, доступні й інші кодування символів - особливо UTF-8; Слід запитати, чи є насправді розшукуваним ASCII.
string s = "9quali52ty3";
foreach(char c in s)
{
Console.WriteLine((int)c);
}
Ви маєте на увазі, що хочете лише алфавітні символи, а не цифри? Тож ви хочете в результаті "якості"? Ви можете використовувати Char.IsLetter або Char.IsDigit, щоб відфільтрувати їх по черзі.
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]);
}
Якщо ви хочете отримати код для кожного символу в рядку, ви можете зробити щось подібне:
char[] chars = "9quali52ty3".ToCharArray();
Раніші респонденти відповідали на питання, але не надали інформації, на яку мене очікував заголовок. У мене був метод, який повертав один рядок символів, але я хотів, щоб символ, який я міг перетворити на шістнадцятковий. Наступний код демонструє те, що я думав, що знайду, сподіваючись, що воно буде корисним для інших.
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);
Вищезгаданий код видає наступне вікно:
a£Δ√
a 97 61
£ 163 A3
Δ 916 394
√ 8730 221А
Ви можете видалити BOM за допомогою:
//Create a character to compare BOM
char byteOrderMark = (char)65279;
if (sourceString.ToCharArray()[0].Equals(byteOrderMark))
{
targetString = sourceString.Remove(0, 1);
}
Я хочу отримати значення символів ASCII в рядку на C #.
Усі дають відповідь у цій структурі. Якщо мій рядок має значення "9quali52ty3", я хочу масив зі значеннями ASCII кожного з 11 символів.
але в консолі ми працюємо відвертістю, тому ми отримуємо табличку та друкуємо код ASCII, якщо я помиляюся, тож виправте мою відповідь.
static void Main(string[] args)
{
Console.WriteLine(Console.Read());
Convert.ToInt16(Console.Read());
Console.ReadKey();
}
Чому б не старомодний простий спосіб?
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);
// краще зараз;)