2010-05-27 74 views
6

假设我想在.Net字符串中使用ASCII特殊字符FS(0x1C),然后能够使用特殊字符从相同字符串格式化字节数组正确表示为单个字节,我该怎么做?我似乎无法摆脱它的困扰。如何在.Net字符串中编写ASCII特殊字符

感谢您提供任何帮助。

+0

在回答你的问题之前,我想知道你为什么试图将字符串转换为字节数组。 – 2010-05-27 15:38:44

+0

我正在写一个函数来解析来自串口的字节数组,但此刻我正在工作,并且没有任何实际的数据要测试。由于我的文档显示了我可以创建自己的数据的格式,我只想将它写成.Net字符串,将其转换为字节数组,然后使用我的函数对其进行解析。但也许有更好的办法。我也愿意就此提出建议。 – JimDaniel 2010-05-27 15:43:48

回答

3

它,而取决于串口数据格式的性质。如果数据主要由散布偶尔的控制字符的ASCII文本字符组成,那么你可以将它们嵌入到字符串中,例如,

var data1 = Encoding.ASCII.GetBytes("Foo\x1CBar\x1CBaz"); 

然而,如果数据包括各种数据类型的几个字段,那么BitConverter类可能更加有用的,例如

var data2 = new List<byte>(); 
// Add an int value 
data2.AddRange(BitConverter.GetBytes(6)); 
// Add a control character 
data2.Add(0x1C); 
// Add an ASCII-encoded string value 
data2.AddRange(Encoding.ASCII.GetBytes("Hello")); 

正如其他人所指出的那样,ASCII是不编码,你可以使用的唯一的字符串,而是从一个串口它是最有可能的。

+0

谢谢,BitConverter在我的情况下会很有用。 – JimDaniel 2010-05-27 16:31:00

3

这里是如何把它嵌入在一个字符串:

"\x1C" 

那是单个字符的字符串表示。假设你希望把它弄出来的字节数组:

byte[] bytes = Encoding.ASCII.GetBytes("\x1C"); 

如果你想从字节数组得到一个字符串:

string s = Encoding.ASCII.GetString(bytes); 

注意,也有更多的编码,像UTF8,在Encoding命名空间中,根据你的需要可能会更好地工作 - 尽管从串行线读取,你可能需要纯ASCII。

+0

这就是我想念的,谢谢! – JimDaniel 2010-05-27 15:55:26