Fragensteller
Offset von ein _Hex-File ändern c#

Frage
-
hallo
also ich wollte das meine Hex datei mit eine andere offset als 0x00 anfängt
alle meine bemühungen bis jetzt
haben mich nicht weit gebracht also jedes mal wenn ich eine neue offset eingebe wo das Hex-File anfangen soll wurde vorher mit nullen gefüllt.
Danke im voraus für jeder hilfe
- Bearbeitet bro89 Freitag, 9. November 2018 07:28
Alle Antworten
-
Hi,
und wo ist das Problem? Bei welchem Code gibt es welchen Fehler? Wenn Du vor den eigentlichen Daten etwas anderes als 0x00 haben willst, dann schreibe das in die Datei.--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Also villeicht habe ich die frage fallsch gestellt
offset vom Hex-File fängt normale weise mit null an und ich wollte das ganze hex-File mit eine andere offset anfängt also beispiel
offset
00000: 0x34 0x15 0x2C
00400: 0x34 0x15 0x2C was ich brauche
und vor dem 00400 offset soll nicht stehen also auch keine nullen.
-
Hi,
was Du zeigst ist eine Darstellung von Binärwerten als Zeichenkette. Bei dieser Darstellung brauchst Du führende Nullen nicht anzeigen (unterdrücken). Bei den intern abgelegten Binärwerten geht das nicht, da ein Byte immer 8 Bit sind und jedes Bit nur 0 oder 1 annehmen kann. Einen dritten Zustand eines Bits (unterdrückt) gibt es da nicht.--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Hi,
und warum überliest Du die ersten 400 Byte nicht? Beim Einlesen werden über einen Zähler die eingelesenen Bytes gezählt und die ersten 400 Bytes ignoriert. Ab dem 401. Byte werden dann die Bytes verarbeitet.--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks -
Hi,
Du willst also eine Datei so ändern, dass die ersten 400 Bytes gar nicht existieren aber dennoch vorhanden sind?
Falls ja: Das geht nicht. Entweder Du fügst bspw. Hex 0 an den ersten 400 Stellen ein oder eben nicht. Aber die Datei wird damit entsprechend größer und am Anfang steht halt was.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Entweder benutzt du eine Temporäre Datei oder benutzt einen MemoryStream wobei beim MemoryStream die Dateigrösse natürlich auch eine Rolle spielt.
Dann füllst du den Anfang mit der entsprechenden Anzahl an Zeichen (Hex 0400 sind 1024 bytes).Mit dem MemoryStream sieht das dann ungefähr so aus
static void Main(string[] args) { var originalData = ReadAllBytes(File.OpenRead("TestDatei.bin")); using (BinaryWriter bwriter = new BinaryWriter(File.OpenWrite("testDatei.bin"))) { byte[] padding = new byte[400]; bwriter.Write(padding); bwriter.Write(originalData); bwriter.Close(); } } public static byte[] ReadAllBytes(Stream stream) { using (var ms = new MemoryStream()) { stream.CopyTo(ms); return ms.ToArray(); } }