将多个ascii代码转换为char

时间:2017-09-26 03:02:59

标签: vb.net

我有一个转换string to ascii code的函数(例如string = "system"ascii = "115 121 115 116 101 109"的{​​{1}}),我需要的是将`ascii转换为char的方法。我是否需要使用循环来过滤转换后的ascii?我需要你的建议什么是最好的转换方式

3 个答案:

答案 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值,但请注意StringChar实际上是Unicode,而不是ASCII。根据编码,您可能会发现一个字符超过一个字节。

对于NITPICKERS:当您将String视为Char的数组时,编译器会将String括起来,因此使用Char效率较低阵列。