我有一个转换string to ascii code
的函数(例如string = "system"
中ascii = "115 121 115 116 101 109"
的{{1}}),我需要的是将`ascii转换为char的方法。我是否需要使用循环来过滤转换后的ascii?我需要你的建议什么是最好的转换方式
答案 0 :(得分:2)
最好的方法是检查你的假设。你说该字符串包含ASCII字节。因此,如果有人滑入一个不能是ASCII的字节,你应该被告知。看起来有人在一个意想不到的空间里滑倒了,但这可以忽略不计。
Imports System.Linq
'…
Dim asciiEncoding = Encoding.GetEncoding("US-ASCII",
EncoderFallback.ExceptionFallback,
DecoderFallback.ExceptionFallback)
Dim ascii = "115 121 115 116 101 109"
Dim asciiBytes = ascii.Split( { " "c }, StringSplitOptions.RemoveEmptyEntries) _
.Select(Function (s) Byte.Parse(s)) _
.ToArray()
Dim s = asciiEncoding.GetString(asciiBytes)
其他方式可能无法捕获无效数据。
某些方法可以自动从ASCII字符集转换为Unicode字符集,这在数据实际上是ASCII时有效,但至少值得对转换发表评论并且数据可信任为ASCII。 / p>
说到数据是否为ASCII,没有文本而是编码文本。当您阅读文本时,您必须使用它所编写的编码。知道的唯一方法是让作家知道。
答案 1 :(得分:1)
我的建议是:
首先使用string.split(' ');
然后将每个拆分字符串转换为char,如下所示:
foreach(string word in SplitedWords)
{
Convert.ToChar(int.Parse(word));
}
答案 2 :(得分:0)
这是内置的。您可以将String
视为Char
的数组。
Dim s As String = "system"
Console.WriteLine(s(4) & " = ASCII " & Asc(s(4))) 'output: e = ASCII 101
Console.ReadKey()
您可以使用Asc()
函数来获取字符的ASCII值,但请注意String
和Char
实际上是Unicode,而不是ASCII。根据编码,您可能会发现一个字符超过一个字节。
对于NITPICKERS:当您将String
视为Char
的数组时,编译器会将String
括起来,因此使用Char
效率较低阵列。