WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Manipulation von Hex-Werten einer Binär-File

 

EliteTUM
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 21.04.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 03.07.2013, 11:01     Titel: Manipulation von Hex-Werten einer Binär-File
  Antworten mit Zitat      
Hallo zusammen,

ich möchte in MATLAB R2010b eine Binär-Datei manipulieren. Bisher habe ich das ganze manuell in dem Texteditor Ultraedit gemacht.
Ich habe die Datei geöffnet, auf HEX-View (Strg + H) umgeschaltet, die Stelle gesucht, die ich manipulieren wollte und dann gespeichert. Das ganze soll aber nun in MATLAB automatisiert (und in der Funktionalität erweitert) werden.

Ich möchte die Datei einlesen, den HEX-Dump als Text/String ausgeben. Diesen String manipulieren. Und aus dem String (der die Darstellung eines HEX-Dumps ist) wieder eine Datei schreiben.
Der Zwischenschritt, dass der Hex-Dump zu einem String konvertiert werden soll ist zu Weiterverarbeitungs-/Dokumentationszwecken gewünscht.

Beispiel, was ich in MATLAB automatisiert machen will:

Zitat:
Ich habe eine Textdatei "test.txt" mit dem Inhalt "Mein Strinh". Wenn ich diese als Hex-Dump anzeigen lasse, erhalte ich:

4D 65 69 6E 20 53 74 72 69 6E 68

Diesen Hex-Dump-String möchte ich nun manipulieren. Sagen wir ich möchte die 68 am Ende durch eine 67 ersetzen. Ich erhalte also

4D 65 69 6E 20 53 74 72 69 6E 67

Diesen String möchte ich nun wieder als Datei "test.txt" speicehrn. Und wenn ich diese Textdatei nun im Editor öffnen würde, hätte sie den Inhalt "Mein String".
Das Ganze soll nur ein Beispiel sein, natürlich will ich keine Text-Dateien manipulieren sondern normale Binärdateien. Aber das Vorgehen wäre identisch.


Bei Suche nach Hex-Befehlen zusammen mit MATLAb komme ich jedoch auf keine hilfreichen Suchergebnisse.
Habt Ihr einen Tipp parat?

Bin für jede Hilfe dankbar!
_________________

- EliteTUM
_____________________________________
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 03.07.2013, 13:58     Titel:
  Antworten mit Zitat      
Ich verstehe das so, dass die ganze Datei wie eine ASCII-Datei eingelesen wird und der Inhalt völlig von der Bedeuting befreit mit Stringoperationen bearbeitet wird. Also STRCMP, STRFIND, REGEXP

HEX Befehle gibt es auch und möchte hier der Vollständigkeit halber welche nennen (HEX2NUM, CHAR) - aber die werde ja hier gar nicht gebraucht so wie ich das sehe.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
EliteTUM
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 21.04.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 03.07.2013, 14:27     Titel:
  Antworten mit Zitat      
Hallo,

ja genau, die Datei wird eingelesen wie wenn es ein ASCII-Text wäre. Jedoch nehme ich halt die Hexadezimaldarstellung der Binärdatei. Und umgekehrt soll sie am Ende wieder so geschrieben werden. Genau diesen Übergang weiß ich nicht, wie ich ihn hinbekomme.

Viele Grüße!
_________________

- EliteTUM
_____________________________________
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 03.07.2013, 14:53     Titel:
  Antworten mit Zitat      
Ach so. Entweder SAVE -ASCII oder durch ein Konstrukt aus mehreren FPRINTF Befehlen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.07.2013, 16:51     Titel: Re: Manipulation von Hex-Werten einer Binär-File
  Antworten mit Zitat      
Hallo EliteTUM,

Wie wäre es damit:
Code:
% Read file:
FID = fopen(FileName, 'r');
if FID == -1, error('Cannot read file'); end
Data = fread(FID, Inf, 'uint8');
fclose(FID);
DataHex = sprintf('%2x', Data);

% Manipulate the data here:
...

% Write file:
DataNew = sscanf(DataHex, '%2x');
FID = fopen(FileName, 'w');
if FID == -1, error('Cannot write file'); end
fwrite(FID, Data, 'uint8');
fclose(FID);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.