字符串中所有字符的ASCII值

时间:2013-10-28 19:38:35

标签: c# ascii

string txt="sentence";

我试图为字符串中的每个字符获取ascii值如何在C#winforms中执行此操作?

2 个答案:

答案 0 :(得分:5)

string txt = "sentence";
int[] asciiArray = txt.Select(r => (int)r).ToArray();

稍后输出即可:

foreach (var item in asciiArray)
    Console.WriteLine(item);

你会得到:

115
101
110
116
101
110
99
101

但请记住,这不仅限于ASCII值,如果字符是Unicode,您将获得其整数表示。

您可以使用简单的foreach循环执行此操作,如:

string txt = "sentence";
foreach (char c in txt)
    Console.WriteLine((int)c);

for循环如:

string txt = "sentence";
for (int i = 0; i < txt.Length; i++)
    Console.WriteLine((int)txt[i]);

重点是将其转换为int以获取int值,对于ASCII字符,该值将为ASCII值。

答案 1 :(得分:3)

C#字符串是UTF-16编码的 Unicode ,而不是ASCII。这意味着每个char是一个16位无符号值。特定的Unicode 字形可以用1或2个这样的16位值表示。

获取ASCII值的“正确”方法是使用ASCII编码类:

string s     = "The quick brown fox jumped over the lazy dog" ;
byte[] bytes = Encoding.ASCII.GetBytes( s ) ;

由于ASCII仅涵盖范围0x00-0x7F(128个字符),因此该范围之外的任何代码点都将转换为0x3f('?')。

考虑使用UTF-8或至少支持0x00-0xFF(Encoding iso = Encoding.GetEncoding("ISO-8859-1"))的编码,以防止数据丢失。