Konwersja z bajtu [] na ciąg
Mam następujący kod:
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++;
}
}
ŚCIEŻKA_PLIKU to ciąg stały, który zawiera ścieżkę do odczytywanego pliku binarnego. Plik binarny jest mieszaniną liczb całkowitych i znaków. Liczby całkowite są 1 bajty każdy i każdy znak jest zapisywany w pliku jako 2 bajty.
Na przykład plik ma następujące dane:
1 HELLO JAK SIĘ JESTEŚCIE POTRZEBUJESZ WIELKIEGO // i tak dalej
Uwaga: każda liczba całkowita jest powiązana z ciągiem znaków po nim. Tak więc 1 wiąże się z „HELLO HOW ARE YOU”, a 45 z „YOU ARE LOOKING GREAT” i tak dalej.
Teraz zapisywany jest plik binarny (nie wiem dlaczego, ale muszę z tym żyć), tak że „1” zajmie tylko 1 bajt, a „H” (i inne znaki) po 2 bajty.
Oto, co zawiera plik:
0100480045.. i tak dalej Heres, podział:
01 to pierwszy bajt dla liczby całkowitej 1 0048 to 2 bajty dla „H” (H to 48 w Hex) 0045 to 2 bajty dla „E” (E = 0x45)
i tak dalej ... Chcę, aby moja konsola drukowała z tego pliku czytelny dla człowieka format: że chcę, aby wydrukował „1 CZEŚĆ JAK JESTEŚ TY”, a następnie „45 JESTEŚ WYGLĄDAJĄCY WIELKI” i tak dalej ...
Czy to, co robię, jest prawidłowe? Czy istnieje łatwiejszy / skuteczniejszy sposób? Moja linia Console.WriteLine (Convert.ToString (b [pos])); nic nie robi, ale drukuje wartość całkowitą, a nie rzeczywisty znak, który chcę. Jest OK dla liczb całkowitych w pliku, ale jak mogę odczytać znaki?
Każda pomoc byłaby bardzo mile widziana. Dzięki