Предположим, что я хочу использовать FS специального символа ASCII (0x1C) в строке .NET и затем смочь отформатировать массив байтов от той же самой строки со специальным символом, правильно представленным как единственный байт, как я сделал бы это? Я, может казаться, не получаю голову вокруг этого.
Спасибо за любую справку можно дать.
Это скорее зависит от характера формата данных последовательного порта. Если данные состоят в основном из текстовых символов 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 - не единственная строковая кодировка, которую вы можете использовать, но для последовательного порта это наиболее вероятно.
Вот как встроить его в строку:
"\x1C"
Строковое представление этого единственного символа. Предположим, вы хотите получить его как массив байтов:
byte[] bytes = Encoding.ASCII.GetBytes("\x1C");
И если вы хотите получить строку из массива байтов:
string s = Encoding.ASCII.GetString(bytes);
Имейте в виду, что в пространстве имен Encoding есть и другие кодировки, такие как UTF8, которые может работать лучше в зависимости от ваших потребностей - хотя, читая из последовательной линии, вы, вероятно, захотите использовать простой ASCII.
Вы должны посмотреть на класс ASCIIEncoding http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx Если вы хотите иметь дело с ASCII. Строки .Net - это Unicode (UCS2). Если вам нужна конкретная кодировка, вам необходимо использовать один из классов кодирования.
Вы можете встроить непечатаемый символ, экранировав его «Моя строка \ x1c»