Во-первых, давайте проясним, что делает показанный код:
- создает пустой байтовый массив
- it декодирует из этого массива с использованием кодировки, создавая новую строку
- передает эту строку для добавления в StringBuilder
Чего он не делает, так это «копирует байты в строку» - не в последнюю очередь строка представляет собой данные «char» (16 бит каждый), а не байтовые данные. Если вы хотите обрабатывать байтовые данные как символьные данные, это будет работать почти как для UTF-16 (в зависимости от порядка байтов), но не для ASCII.
Повторно выбирая, сколько добавить:
- Encoding.GetString имеет перегрузку для указания смещения и количества байтов, которые необходимо учитывать
- StringBuilder.Append имеет перегрузку, чтобы указать смещение и количество данных символа для рассмотрения
Здесь может быть полезен один или оба; однако, я не думаю, что код делает то, что вы думаете; Есть более простые способы инициализации StringBuilder