Frage

Im Versuch, ein einzelnes Byte an einer bestimmten Stelle in einer Datei zu schreiben. Dies ist, was im zur Zeit mit:

BinaryWriter bw = new BinaryWriter(File.Open(filename, FileMode.Open));
bw.BaseStream.Seek(0x6354C, SeekOrigin.Begin);
bw.Write(0xB0);
bw.Close();

Das Problem ist, dass BinaryWriter.Write (args) eine Vier-Byte-Ganzzahl mit Vorzeichen an der Stelle schreibt. Ich möchte nur einen Byte an der bestimmten Stelle schreiben. Und dann später möglicherweise zwei Bytes sonst wo, wie ich, wie viele Bytes zu schreiben?

War es hilfreich?

Lösung

Es gibt absolut keine Notwendigkeit, einen High-Level-Binary verwendet nur ein einfaches Byte in einen Stream zu schreiben - es ist effizienter und ordentlich gerade dies zu tun:

Stream outStream = File.Open(filename, FileMode.Open);
outStream.Seek(0x6354C, SeekOrigin.Begin);
outStream.WriteByte(0xb0);

(Im Allgemeinen sollten Sie auch nicht wirklich Suche nach einem Binary zu Ihrem Strom Befestigung - die Binary in der Steuerung des Stroms sein sollte, und Dinge zu verändern „hinter dem Rücken“ ist ein bisschen schmutzig)

Andere Tipps

Veränderung

bw.Write(0xB0);

bw.Write((byte)0xB0);

Sie können auf Byte-Stimmen:

bw.Write((byte)0xB0);

Dies sollte die korrekte überladene Version von Write verursacht aufgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top