Convertir de byte [] a cadena

Tengo el siguiente 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++;
    }
}

FILE_PATH es una cadena constante que contiene la ruta al archivo binario que se está leyendo. El archivo binario es una mezcla de enteros y caracteres. Los enteros son 1 bytes cada uno y cada carácter se escribe en el archivo como 2 bytes.

Por ejemplo, el archivo tiene los siguientes datos:

1HELLO, ¿CÓMO ESTÁS, ESTÁS DESEADO? // y así sucesivamente

Tenga en cuenta: Cada entero está asociado con la cadena de caracteres que lo sigue. Por lo tanto, 1 está asociado con "HOLA COMO ESTÁ" y 45 con "ESTÁS MIRADO", y así sucesivamente.

Ahora el binario está escrito (no sé por qué, pero tengo que vivir con esto) de modo que '1' tomará solo 1 byte mientras que 'H' (y otros caracteres) tomen 2 bytes cada uno.

Así que aquí está lo que realmente contiene el archivo:

0100480045..y así en Heres el desglose:

01 es el primer byte para el entero 1 0048 son los 2 bytes para 'H' (H es 48 en Hex) 0045 son los 2 bytes para 'E' (E = 0x45)

y así sucesivamente ... Quiero que mi Consola imprima un formato legible por humanos de este archivo: que quiero que imprima "1 HOLA COMO ESTÁ" y luego "45 ESTÁS MIRANDO", y así sucesivamente ...

¿Es correcto lo que estoy haciendo? ¿Hay una manera más fácil / eficiente? My line Console.WriteLine (Convert.ToString (b [pos])); no hace nada pero imprime el valor entero y no el carácter real que quiero. Está bien para los enteros en el archivo, pero luego, ¿cómo leo los caracteres?

Cualquier ayuda sería muy apreciada. Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta