GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Matlabs fwrite:Was passiert mit übersprungenen Bytes?

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:


Linux
  1. Was passiert hinter den Kulissen eines wurzellosen Podman-Containers?

  2. Was passiert mit einem geöffneten Datei-Handle unter Linux, wenn die angegebene Datei verschoben oder gelöscht wird

  3. DD von /dev/zero nach /dev/null ... was eigentlich passiert

  4. Was passiert, wenn Sie eine Gerätedatei löschen?

  5. In welchen Einheiten sind die I/O-Maßnahmen in der GNU-Zeit angegeben?

Was genau passiert, wenn ich eine Datei in der Shell ausführe?

Was passiert mit der Ausgabe eines Prozesses, der enteignet wurde und sein Terminal verloren hat?

Was im Hintergrund passiert, wenn Sie unter Linux den Befehl „useradd“ ausführen

Was ist das Konzept, eine Datei mit null Bytes in Linux zu erstellen?

Was passiert, wenn das Limit von 4 Milliarden Dateien in einer ext4-Partition überschritten wurde?

Was passiert, wenn ich lost+found lösche?