Я имею дело с байтовым массивом, который содержит текстовое сообщение, но некоторые из символов в сообщении являются управляющими символами (т. Е. Менее 0x20), и я хочу заменить их последовательностями символов, которые могут быть прочитаны человеком при декодированиив ASCII (например, 0x0F
будет отображать [TAB]
вместо того, чтобы фактически быть символом табуляции).Итак, на мой взгляд, у меня есть три варианта:
- Декодировать все это в строку ASCII, затем использовать
String.Replace()
, чтобы поменять то, что я хочу.Проблема в том, что символы кажутся просто декодированными как непечатаемый символ коробки или вопросительные знаки, теряя при этом их действительные значения байтов. - Итерация по массиву байтов в поисках любых моих управляющих символов и выполнениеОперация вставки массива (создание нового большего массива, копирование существующих частей, запись новых частей).
- Используйте
Array.ToList<byte>()
для преобразования байтового массива в List
, затем используйте IEnumerable.SelectMany()
для преобразования управляющих символовв последовательности читаемых символов, которые затем сгладят для меня SelectMany
.
Итак, вопрос в том, какой вариант является лучшим с точки зрения эффективности?Я не очень хорошо понимаю влияние производительности на IEnumerable
лямбда-операции.Я считаю, что вариант 1 является функционально неработоспособным, но я могу ошибаться.