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