Ich habe den folgenden Code:von Byte Konvertieren von [] zu String
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++;
}
}
Die FILE_PATH ist ein const String, der den Pfad zur Binärdatei enthält gelesen werden. Die Binärdatei ist eine Mischung aus ganzen Zahlen und Zeichen. Die Ganzzahlen sind jeweils 1 Byte und jedes Zeichen wird als 2 Byte in die Datei geschrieben.
Zum Beispiel hat die Datei die folgenden Daten:
1HELLO HOW ARE YOU45YOU GROSSER // SUCHEN und so weiter
Bitte beachten Sie: Jede ganze Zahl ist, die mit der Zeichenfolge danach. Also 1 steht in Verbindung mit "HALLO WIE SIE SIND" und 45 mit "SIE SIND GROSS" und so weiter.
Jetzt wird die Binärdatei geschrieben (ich weiß nicht warum, aber ich muss damit leben), so dass '1' nur 1 Byte dauert, während 'H' (und andere Zeichen) jeweils 2 Byte benötigt.
Hier ist also, was die Datei tatsächlich enthält:
0100480045..and usw. Heres des Durchbruch:
01 ist das erste Byte für die ganze Zahl 1 0048 ist die 2 Byte für ‚H "(H 48 in Hex) 0045 sind das 2 Bytes für 'E' (E = 0x45)
und so weiter .. ich mag, dass meine Konsole lesbare Form aus dieser Datei drucken: das mag ich es zu drucken "1 HALLO WIE SIE SIND" und dann "45 SIE SUCHEN GROSS" und so weiter .. .
Was mache ich richtig? Gibt es einen einfacheren/effizienteren Weg? Meine Linie Console.WriteLine (Convert.ToString (b [pos])); tut nichts, aber druckt den ganzzahligen Wert und nicht das tatsächliche Zeichen, das ich will. Es ist OK für ganze Zahlen in der Datei, aber wie lese ich dann Zeichen aus?
Jede Hilfe würde sehr geschätzt werden. Danke
Sprache? – mkoryak
Ich löschte meine Antwort - Was dachte die Person, die sich für dieses Format entschieden hat? : boggled: –
Wie wird das Integer-Feld von der Zeichenfolge unterschieden? Können die Zeichen über dem Codepunkt U + 00FF liegen? Kann die ganze Zahl "0" sein? Ist die ganze Zahl signiert oder unsigniert? – outis