Почему я получаю \u0010, возвращаемый из Encoding.ASCII.GetString(), когда исходный массив байтов содержит простые байтыC#

Место общения программистов C#
Anonymous
Почему я получаю \u0010, возвращаемый из Encoding.ASCII.GetString(), когда исходный массив байтов содержит простые байты

Сообщение Anonymous »

Я пытаюсь использовать C# для чтения/записи некоторых старых файлов данных, которые были написаны с использованием Delphi и содержат только данные на основе ASCII. Некоторые данные представляют собой строки Pascal, длина которых, как вы, возможно, знаете, хранится в первом байте. .
Я открыл файлы с помощью FileStream, а затем использовал метод Read() для чтения данных в буфер (массив байтов). Я вижу, что массив байтов имеет значение 16 (десятичное) для первого байта, который я собираюсь прочитать из этого буфера.
Однако, когда я использую Encoding.ASCII.GetString(buffer, 18, 127) для чтения буфера в строку, результирующая строка получает строку '\u0010' в качестве первого символа, что все портит.
Любые мысли о том, как я могу избежать этот. Я бы предпочел не перекодировать с помощью StreamReader, чтобы добавить кодировку ANSII... все это основано на char[] и все равно может не работать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... source-byt

Вернуться в «C#»