string txt="sentence";
我试图为字符串中的每个字符获取ascii值如何在C#winforms中执行此操作?
答案 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")
)的编码,以防止数据丢失。