Bei solchen Fragen ist der einfachste Weg, es herauszufinden, normalerweise, es selbst auszuprobieren, wenn es nicht zu komplex ist. Jetzt haben Sie angegeben, dass Sie Linux verwenden , möglicherweise können Sie den Test auf Ihrer Plattform wiederholen und sehen, ob die Ergebnisse übereinstimmen.
Für Windows Plattform, die skip
Wert:
- wird vorher implementiert der erste zu schreibende Wert
- scheint jedes übersprungene Byte beim Wert
00
zu belassen (wahrscheinlich was das Betriebssystem als neuen Wert für eine Datei zuweist)
Beispiele:
Dieser Code:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)
Erzeugt die folgende Datei (in einem Hex-Editor angezeigt):
Und wenn Sie mehr als einen Wert schreiben müssen:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Du bekommst trotzdem 10x 00
Werte vor jedem short
Wert, den Sie aktiv schreiben:
Dies war bei einer neu erstellten Datei der Fall. Mal sehen, was mit einer bestehenden Datei passiert ist:
%% Let's create a file full of `FF`
FFarray = uint8(ones(36,1)*255) ;
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,FFarray,'uint8')
fclose(fid)
was ergibt:
Verwenden Sie nun denselben Code wie zuvor (mit dem permission
auf w
setzen ):
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Ja, wir bekommen immer noch dasselbe. Dies stimmt nun mit der MATLAB-Dokumentation für die von Ihnen angegebene Berechtigung überein:
w
=> Öffnen oder erstellen Sie eine neue Datei zum Schreiben. Vorhandene Inhalte verwerfen , falls vorhanden.
Wenn Sie diese Berechtigung einfach auf r+
ändern (Datei zum Lesen und Schreiben öffnen. ):
fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Sie überschreiben nur die nicht übersprungenen Werte: