GNU/Linux >> Belajar Linux >  >> Linux

Fwrite Matlab:Apa yang terjadi pada byte yang dilewati?

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:


Linux
  1. Apa Yang Terjadi Saat Saya Menjalankan Perintah Cat /proc/cpuinfo?

  2. Apa yang Terjadi Saat Saya Mengeksekusi File Di Shell?

  3. Apa Yang Terjadi Jika Saya Menonaktifkan Dan Menghapus Instalasi Plymouth?

  1. Apa yang terjadi pada pegangan file terbuka di Linux jika file yang ditunjuk dipindahkan atau dihapus

  2. Berapa totalnya di baris pertama setelah ls -l?

  3. Apa yang terjadi ketika sebuah benang bercabang?

  1. Apa yang terjadi jika mv terganggu?

  2. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  3. Apa konsep membuat file dengan nol byte di Linux?