Convertendo de byte [] para string

Eu tenho o seguinte código:

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++;
    }
}

O FILE_PATH é uma cadeia const que contém o caminho para o arquivo binário que está sendo lido. O arquivo binário é uma mistura de inteiros e caracteres. Os inteiros são 1 bytes cada e cada caractere é gravado no arquivo como 2 bytes.

Por exemplo, o arquivo tem os seguintes dados:

Como você está olhando para você?

Por favor note: Cada número inteiro é associado com a seqüência de caracteres que o segue. Então 1 está associado com "OLÁ COMO VOCÊ ESTÁ" e 45 com "VOCÊ ESTÁ OLHANDO ÓTIMO" e assim por diante.

Agora o binário está escrito (eu não sei por que, mas tenho que viver com isso) tal que '1' levará apenas 1 byte enquanto 'H' (e outros caracteres) tomam 2 bytes cada.

Então, aqui está o que o arquivo realmente contém:

0100480045 .. e assim por diante, a repartição:

01 é o primeiro byte para o inteiro 1 0048 são os 2 bytes para 'H' (H é 48 em Hex) 0045 são os 2 bytes para 'E' (E = 0x45)

e assim por diante .. Eu quero meu console para imprimir formato legível humano fora deste arquivo: Que eu quero imprimir "1 Olá, como você está" e, em seguida, "45 você está olhando grande" e assim por diante ...

O que estou fazendo correto? Existe uma maneira mais fácil / eficiente? Minha linha Console.WriteLine (Convert.ToString (b [pos])); faz nada, mas imprime o valor inteiro e não o caractere real que eu quero. Está tudo bem para números inteiros no arquivo, mas como eu leio os caracteres?

Qualquer ajuda seria muito apreciada. obrigado

questionAnswers(3)

yourAnswerToTheQuestion