GNU/Linux >> Znalost Linux >  >> Linux

Matlabův fwrite:Co se stane s přeskočenými bajty?

U tohoto typu otázek je nejsnazší způsob, jak to zjistit, vyzkoušet si to sami, pokud to není příliš složité. Nyní jste uvedli, že používáte Linux , možná můžete zopakovat test na vaší platformě a zjistit, zda se výsledky shodují.

Pro Windows platforma, skip hodnota:

  • je implementován před první hodnota k zápisu
  • zdá se, že každý přeskočený bajt ponechává na hodnotě 00 (pravděpodobně to, co OS přiřadí jako novou hodnotu souboru)

Příklady:

Tento kód:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)

Vytváří následující soubor (zobrazený v hex editoru):

A pokud chcete napsat více než jednu hodnotu:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Stále dostanete 10x 00 hodnoty před každým short hodnota, kterou aktivně píšete:

To byl případ nově vytvořeného souboru. Podívejme se, co se stalo s existujícím souborem:

%% 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)

což dává:

Nyní pomocí stejného kódu jako dříve (s permission nastavte na w ):

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Ano, stále dostáváme to samé. Nyní je to v souladu s dokumentací MATLABu pro oprávnění, které jste uvedli:

w => Otevřete nebo vytvořte nový soubor pro zápis. Zahodit stávající obsah , pokud existuje.

Pokud toto oprávnění jednoduše změníte na r+ (Otevřít soubor pro čtení a zápis. ):

fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Přepíšete pouze nepřeskočené hodnoty:


Linux
  1. Co se stane s popisovačem otevřeného souboru v systému Linux, pokud se označený soubor přesune nebo odstraní

  2. DD z /dev/zero do /dev/null...co se vlastně stane

  3. Co se stane s vícevláknovým procesem Linuxu, pokud dostane signál?

  1. Co se stane s výstupem procesu, který byl odmítnut a ztratil svůj terminál?

  2. Jaký je koncept vytvoření souboru s nula bajty v Linuxu?

  3. Co se stane, když smažu ztracené+nálezy

  1. Linux – Co se stane, když Rsync bez cílové cesty?

  2. Co se stane, když zakážu a odinstaluji Plymouth?

  3. Jaký je celkový součet na prvním řádku po ls -l?