Dalam pertanyaan semacam ini, cara termudah untuk mengetahuinya adalah dengan mencobanya sendiri jika tidak terlalu rumit. Sekarang Anda menunjukkan bahwa Anda menggunakan Linux , mungkin Anda dapat mengulangi pengujian di platform Anda dan melihat apakah hasilnya cocok.
Untuk Windows platform, skip
nilai:
- diimplementasikan sebelum nilai pertama yang ditulis
- tampaknya meninggalkan setiap byte yang dilewati pada nilai
00
(mungkin apa yang ditetapkan OS sebagai nilai baru untuk sebuah file)
Contoh:
Kode ini:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)
Menghasilkan file berikut (terlihat di editor hex):
Dan jika Anda memiliki lebih dari satu nilai untuk ditulis:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Anda masih mendapatkan 10x 00
nilai sebelum setiap short
nilai yang Anda tulis secara aktif:
Ini adalah kasus untuk file yang baru dibuat. Mari kita lihat apa yang terjadi pada file yang ada:
%% 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)
yang memberikan:
Sekarang dengan menggunakan kode yang sama seperti sebelumnya (dengan permission
setel ke w
):
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Ya, kami masih mendapatkan hal yang sama. Sekarang ini konsisten dengan dokumentasi MATLAB untuk izin yang Anda tunjukkan:
w
=> Buka atau buat file baru untuk menulis. Buang konten yang ada , jika ada.
Jika Anda cukup mengubah izin itu menjadi r+
(Buka file untuk membaca dan menulis. ):
fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Anda hanya menimpa nilai yang tidak dilewati: