Преобразование из байта [] в строку

У меня есть следующий код:

using (BinaryReader br = new BinaryReader(
       File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
    int pos = 0;
    int length = (int) br.BaseStream.Length;

    while (pos < length)
    {
        b[pos] = br.ReadByte();
        pos++;
    }

    pos = 0;
    while (pos < length)
    {
        Console.WriteLine(Convert.ToString(b[pos]));
        pos++;
    }
}

FILE_PATH - это константная строка, которая содержит путь к читаемому двоичному файлу. Двоичный файл представляет собой смесь целых чисел и символов. Целые числа составляют 1 байт каждый, и каждый символ записывается в файл как 2 байта.

Например, файл содержит следующие данные:

1HELLO КАК ТЫ 45, ТЫ СМОТРЕЛ

Обратите внимание: каждое целое число связано со строкой символов, следующих за ним. Так что 1 связано с "ПРИВЕТ, КАК ТЫ" и 45 с "ТЫ ПРЕКРАСНО ВЫГЛЯДИШЬ" и так далее.

Теперь бинарный файл написан (я не знаю почему, но я должен жить с этим), так что «1» займет всего 1 байт, в то время как 'H' (и другие символы) занимают 2 байта каждый.

Итак, вот что на самом деле содержит файл:

0100480045 .. и так далее, вот поломка

01 - первый байт для целого числа 1 0048 - 2 байта для «H» (H равно 48 в шестнадцатеричном формате) 0045 - это 2 байта для 'E' (E = 0x45)

и так далее ... Я хочу, чтобы моя консоль печатала читабельный формат из этого файла: «Я хочу, чтобы он печатал»1 ПРИВЕТ КАК ТЫ " а потом "45 ТЫ СМОТРЕЛ и так далее...

Что я делаю правильно? Есть ли более простой / эффективный способ? Моя строка Console.WriteLine (Convert.ToString (b [pos])); ничего не делает, но печатает целочисленное значение, а не фактический символ, который я хочу. Это нормально для целых чисел в файле, но тогда как мне прочитать символы?

Любая помощь приветствуется. Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос