Как записать специальные символы ASCII в строку .Net - PullRequest
6 голосов
/ 27 мая 2010

Предположим, я хочу использовать специальный символ ASCII FS (0x1C) в строке .Net, а затем иметь возможность форматировать массив байтов из этой же строки, используя специальный символ, правильно представленный в виде одного байта. тот? Кажется, я не могу обойти это.

Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 3 ]

3 голосов
/ 27 мая 2010

Это скорее зависит от характера формата данных последовательного порта. Если данные состоят в основном из текстовых символов 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 - не единственная строковая кодировка, которую вы можете использовать, но из последовательного порта это наиболее вероятно.

3 голосов
/ 27 мая 2010

Вот как вставить это в строку:

"\x1C"

Строковое представление этого единственного символа. Предположим, вы хотите получить его в виде массива байтов:

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

А если вы хотите получить строку из массива байтов:

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

Имейте в виду, что в пространстве имен Encoding также есть больше кодировок, таких как UTF8, которые могут работать лучше в зависимости от вашей потребности - хотя при чтении из последовательной линии вам, вероятно, понадобится простой ASCII.

1 голос
/ 27 мая 2010

Вы должны взглянуть на класс ASCIIEncoding http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx Если вы хотите иметь дело с ASCII. Строки .Net являются Unicode (UCS2). Если вам нужна конкретная кодировка, вам нужно использовать один из классов кодирования.

Вы можете встроить непечатаемый символ, экранируя его "Моя строка \ x1c"

...