假设我想在.Net字符串中使用ASCII特殊字符FS(0x1C),然后能够使用正确表示为单字节的特殊字符从同一字符串格式化字节数组,我该怎么做那?我似乎无法理解它。
感谢您提供任何帮助。
答案 0 :(得分:3)
以下是如何将其嵌入字符串中:
"\x1C"
是该单个字符的字符串表示形式。假设你想把它作为一个字节数组出来:
byte[] bytes = Encoding.ASCII.GetBytes("\x1C");
如果你想从一个字节数组中获取一个字符串:
string s = Encoding.ASCII.GetString(bytes);
请注意,编码命名空间中还有更多编码,如UTF8,可能会根据您的需要更好地工作 - 尽管从串行线读取您可能需要纯ASCII。
答案 1 :(得分: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不是你可以使用的唯一字符串编码,但是从串口开始,它最有可能。
答案 2 :(得分:1)
你应该看一下ASCIIEncoding类http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx 如果你想处理ASCII。 .Net字符串是unicode(UCS2)。如果需要特定编码,则需要使用其中一种编码类。
您可以通过转义“My string \ x1c”
来嵌入不可打印的字符