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: