如何将字符串中的每个字母转换为ASCII字符值?
答案 0 :(得分:23)
.NET将所有字符串存储为UTF-16代码单元序列。 (对于大多数用途,这足够接近“Unicode字符”。)
幸运的是,Unicode的设计使得ASCII值映射到Unicode中的相同数字,因此在将每个字符转换为整数后,您只需检查它是否在ASCII范围内。请注意,您可以使用从char
到int
的隐式转换 - 无需调用转换方法:
string text = "Here's some text including a \u00ff non-ASCII character";
foreach (char c in text)
{
int unicode = c;
Console.WriteLine(unicode < 128 ? "ASCII: {0}" : "Non-ASCII: {0}", unicode);
}
答案 1 :(得分:17)
For Any String试试这个:
string s = Console.ReadLine();
foreach( char c in s)
{
Console.WriteLine(System.Convert.ToInt32(c));
}
Console.ReadKey();
答案 2 :(得分:12)
这很简单:
string s = "ABCD";
byte[] bytes = Encoding.ASCII.GetBytes(s);
int result = BitConverter.ToInt32(bytes, 0);
现在你有一个所有字节的数组,编码int
是result
。如果你需要回去,你可以去:
int i = result;
byte[] bytes2 = BitConverter.GetBytes(i);
string s2 = Encoding.ASCII.GetString(bytes);
答案 3 :(得分:2)
尝试Linq:
Result = string.Join("", input.ToCharArray().Where(x=> ((int)x) < 127));
这将过滤掉所有非ASCII字符。现在,如果您想要一个等效的,请尝试以下操作:
Result = string.Join("", System.Text.Encoding.ASCII.GetChars(System.Text.Encoding.ASCII.GetBytes(input.ToCharArray())));
答案 4 :(得分:0)
使用Convert.ToInt32()进行转换。您可以查看 How to convert string to ASCII value in C# 和 ASCII values 。
答案 5 :(得分:0)
您可以使用LINQ表达式来实现。
public static List<int> StringToAscii(string value)
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Value cannot be null or empty.", nameof(value));
return value.Select(System.Convert.ToInt32).ToList();
}
答案 6 :(得分:0)
这是基于 Jon Skeet 的回答的扩展方法:
public static string ConvertUnicodeStringToAscii(this string text)
{
var sb = new StringBuilder();
foreach (char c in text)
{
int unicode = c;
if (unicode < 128)
{
sb.Append(c);
}
}
return sb.ToString();
}
答案 7 :(得分:-1)
我认为此代码可能对您有所帮助:
string str = char.ConvertFromUtf32(65)