C # Wie ein Byte bei einem Offset zu schreiben?
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?
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.