BinaryWriter bei Strings

kuhlmaehn

Erfahrenes Mitglied
Hi!
Ich will mit dem BinaryWriter strings in einer Datei speichern und dabei hab ich zwei Probleme.
Das hier ist der Code.
C#:
FileStream fs = new FileStream(OutFile, FileMode.OpenOrCreate, FileAccess.Write);
            BinaryWriter w = new BinaryWriter(fs);
            w.BaseStream.Seek(0, SeekOrigin.End);

            string asd = "hallo";

            w.Write(asd);
            w.Close();
Das erste Problem ist, dass später in der Datei dann ".hallo" steht. Es wird also vor dem h noch ein Zeichen hinzugefügt. :confused:
Das zweite Problem ist, dass ich in der Datei auf jeden Fall 20 bytes füllen muss. Also beim Wort "hallo" müssen noch 15 bytes mit Nullen gefüllt werden. Kann ich von vornherrein den String asd als 20byte String definieren oder muss ich das am Ende manuell mit Nullbytes füllen?
Ich hoffe das war alles verständlich.
Danke! :)
 
Ah ich hab jetzt endlich rausgefunden was es mit dem byte vor dem Text aufsich hat.
C# speichert vor dem Text die Anzahl der Buchstaben. :confused:
Wenn ich also das Wort "tutorials" in die Datei schreibe und sie mir danach im Hexeditor angucke steht dort "09 FF FF FF FF FF FF FF FF FF" (hatte jetzt keine Lust die Hexwerte für "tutorials" nachzugucken ;) ).
Es wird also vor dem Text ein Byte mit der Anzahl der Buchstaben erstellt.
Das finde ich irgendwie total überflüssig und kann es auch gar nicht gebrauchen.
Vielleicht kann mir ja jemand sagen wie ich das unterbinden kann.
Danke!

[Edit]
Ok jetzt hab ich es dann doch selbst rausgefunden. :-(
Ein einfaches ".ToCharArray" reicht aus. Im obrigen Code dann:
C#:
w.Write(asd.ToCharArray);
 
Zuletzt bearbeitet:
Zurück