繁体   English   中英

不包含ASCII的定义

[英]Does not contain definition for ASCII

所以我正在尝试使用蓝牙模块(HC-06)从我的手机读取发送到我的Netduino板的数据。 但是,我无法将字节转换为文本,因此我可以比较我发送的字符,从而将它们转换为条件语句。 从我所看到的,我需要在C#中使用以下代码行将其从字节数组更改为字符串,但是在我的范围内找不到类的定义!! 这是一行:

Encoding.ASCII.GetString();

这是我得到的错误:

'System.Text.Encoding' does not contain definition for 'ASCII'

我正在使用.Net Micro Framework 4.1版和Visual Studio Express 2012 IDE。 我正在使用原始的NetduinoNetduino 14.1 Framework

不包括ASCII编码,因为它不是必需的。 UTF-8与ASCII相同,MSB在文本流中无关紧要。 只要内容被正确发送和接收,您就应该能够使用UTF8编码获得正确的文本表示。 例如,如果缓冲区包含您收到的文本...

Debug.Print(new String(Encoding.UTF8.GetChars(buffer, 0, buffer.Length)));

Encoding.ASCII存在于.NET 4.7.2标准中,但不是所有地方都存在。 看到

https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.ascii?view=netframework-4.7.2

如果像我一样,因为您正在开发一个可移植的库,您偶然发现了这个页面,您会注意到应用于该部分的页面底部,Encoding.ASCII在所有上下文中都不可用。

无法使用Anywhere 7位编码,您需要手动过滤掉任何8位及以上的字节并使用Encoding.UTF8。 一种简单的方法是使用正则表达式替换。 如果您可以在字符串中允许空值,则可以修改以下代码,我将其排除。

String MyASCIIString = Encoding.UTF8.GetString(MyByteArray);
Regex NotASCII = new Regex("[^\u0001-\u007f]+");
MyASCIIString = NotASCII.Replace(MyASCIIString, "");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM