Problem beim Schreiben in Datei

Tim Bureck

Erfahrenes Mitglied
Hallo zusammen!

Vorab: Hier geht's quasi um das umgekehrte Problem aus diesem Topic.

Es geht also darum die Bytefolge

Code:
1A46 5AC7

zu schreiben. Die steht bei mir in einer readonly-Variable:

C#:
public static readonly String IDENTIFIER = "FZ" + '\xC7';

Der Code zum Schreiben sieht so aus:

C#:
this.writer = new BinaryWriter(new FileStream(filePath, FileMode.Create), Encoding.UTF8);
this.writer.Write(NFZ.IDENTIFIER);

Das Ergebnis sieht nun leider so aus:

Code:
1A04 465A C387

Wobei es mir schlichtweg ein Rätsel ist, wie sich das C3 87 dort einschleicht oder das 04-Byte. Das 1A Byte (Strg+Z) kommt von einer vorherigen Schreibaktion. Hat jemand eine Idee? :)

Best regards
 
Zuletzt bearbeitet:
Hi.

Wo die 0x04 her kommt kann ich nicht sagen. Den Code hast du auch nicht gezeigt...

Allerdings hast du angegeben, das du die Datei in UTF-8 schreiben möchtest und ein 0xC7 (== 199 == 11000111) wird nun mal in UTF-8 als eine Folge von 2 Bytes (da der Wert größer als 127 ist) gespeichert nach dem Muster

Code:
  110***** 10******
     00011   000111
= 11000011 10000111 == 0xC3 0x87
Wenn du Bytes schreiben willst, dann schreib doch auch Bytes und nicht Text:
C#:
byte[] IDENTIFIER =  { (byte)'F', (byte)'Z', 0xC7 };
writer.Write(IDENIFIER);
Gruß
 
Die Herleitung hab ich jetzt nicht so ganz verstanden.. das muss ich mir wohl nochmal angucken. Jedenfalls funktioniert es jetzt. Sowohl das 0x04 ist weg als auch das 0xC7 wird korrekt geschrieben.

Vielen Dank. :)
 
Zurück