none
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
    Freitag, 9. November 2018 07:19

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

    Freitag, 9. November 2018 08:03
  • 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.

    Freitag, 9. November 2018 08:16
  • 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

    Freitag, 9. November 2018 08:26
  • Hi

    ich will eigentlich keine Bits unterdrücken nur offset ändern können damit das Hex-File nicht bei offset 00000 anfängt sondern offset 00400. wie im obere beispiel.

    Danke

    Freitag, 9. November 2018 08:41
  • 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

    Freitag, 9. November 2018 09:18
  • 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

    Freitag, 9. November 2018 09:30
    Moderator
  • 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();
                }
            }

    Samstag, 10. November 2018 14:21