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