Umwandlung von Byte [] in String

Ich habe folgenden Code:

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

Der FILE_PATH ist eine konstante Zeichenfolge, die den Pfad zu der zu lesenden Binärdatei enthält. Die Binärdatei ist eine Mischung aus Ganzzahlen und Zeichen. Die Ganzzahlen sind jeweils 1 Byte und jedes Zeichen wird als 2 Byte in die Datei geschrieben.

Die Datei enthält beispielsweise die folgenden Daten:

1HALLO WIE SIE SIND45SIE SEHEN GROSSARTIG AUS // und so weiter

Bitte beachten Sie: Jede Ganzzahl ist mit der darauf folgenden Zeichenfolge verknüpft. Also steht 1 für "HALLO WIE GEHT ES IHNEN?" Und 45 für "SIE SEHEN GROSSARTIG AUS" und so weiter.

Jetzt ist die Binärdatei so geschrieben (ich weiß nicht warum, aber ich muss damit leben), dass '1' nur 1 Byte benötigt, während 'H' (und andere Zeichen) jeweils 2 Byte benötigen.

Hier ist also, was die Datei tatsächlich enthält:

0100480045..und so weiter Hier die Aufschlüsselung:

01 ist das erste Byte für die Ganzzahl 1 0048 sind die 2 Bytes für 'H' (H ist 48 in Hex) 0045 sind die 2 Bytes für 'E' (E = 0x45)

und so weiter ... Ich möchte, dass meine Konsole ein lesbares Format aus dieser Datei druckt: Dass es "1 HALLO WIE GEHT ES IHNEN" und dann "45 SIE SEHEN GROSSARTIG AUS" und so weiter ...

Ist das, was ich tue, korrekt? Gibt es einen einfacheren / effizienteren Weg? Meine Zeile Console.WriteLine (Convert.ToString (b [pos])); Es gibt nur den ganzzahligen Wert und nicht das gewünschte Zeichen aus. Es ist OK für ganze Zahlen in der Datei, aber wie lese ich dann Zeichen aus?

Jede Hilfe wäre sehr dankbar. Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage