Mengapa Anda tidak melihat kode biner ketika Anda membuka file biner dengan editor teks? Misalnya, ketika saya membuka gambar dengan editor teks, saya melihat beberapa karakter aneh dan juga beberapa karakter yang dapat dibaca manusia; tetapi gambar harus dikodekan dalam biner.
51
Jawaban:
Biner dan data teks tidak terpisah: Mereka hanya data . Itu tergantung pada interpretasi yang membuat mereka satu atau yang lain. Jika Anda membuka data biner (seperti file gambar) dalam editor teks, banyak dari itu tidak masuk akal, karena tidak sesuai dengan interpretasi yang Anda pilih (sebagai teks).
Apa yang Anda sebut teks adalah subset dari konten file yang mungkin: Data yang di set karakter yang diberikan diterjemahkan ke karakter yang dapat dibaca.
Misalnya, dalam ASCII , Anda dapat melihat bahwa, dari 128 nilai yang "diizinkan", hanya sekitar setengahnya berupa huruf dan angka, 30 adalah tanda baca, dan sisanya adalah karakter kontrol . Grup yang terakhir tidak banyak digunakan dalam file teks, dan mereka tidak memiliki representasi tekstual yang benar-benar bagus. Beberapa di antaranya adalah karakter Tab dan Newline , di mana editor teks sudah harus kreatif dalam menampilkannya.
Beberapa editor teks memiliki opsi untuk secara eksplisit menampilkan spasi putih. Kemudian mereka akan benar-benar digambarkan sebagai karakter, di samping perilaku pemformatan reguler mereka (yang juga hanya merupakan interpretasi dari karakter-karakter ini).
ASCII Murni hanya mengartikan 128 nilai. Bytes yang digunakan untuk menyimpan informasi ini masing-masing memiliki 256 nilai yang mungkin, jadi setengah dari nilai yang mungkin tidak diizinkan di ASCII. Itu misalnya digunakan dalam set karakter khusus kawasan, seperti Latin 1, tetapi dalam ASCII, mereka tidak terdefinisi. Mereka tidak memiliki representasi yang berguna dalam penampil teks yang hanya bisa menangani ASCII.
Data biner biasanya tidak diartikan sebagai teks. Jadi dalam file-file ini, semua nilai byte yang mungkin umumnya ditemukan. Segala sesuatu yang lain akan sia-sia (dan itulah alasan Anda dapat mengompresi teks dengan sangat baik). Format file gambar rumit, dan Anda biasanya tidak melihatnya sebagai teks, sehingga tidak perlu dibaca.
Karena tidak ada interpretasi data umum (set karakter) yang memetakan semua nilai yang mungkin untuk karakter yang dapat dibaca, dan karena itu tidak masuk akal juga (karena itu bukan teks yang dapat dibaca), bagian utama ditampilkan sebagai omong kosong.
Editor heksa memilih representasi yang berbeda untuk data: Ini menampilkan setiap byte sebagai dua digit heksadesimal . Ini hanya representasi yang berbeda, dan satu dengan rangkaian karakter yang mudah dibaca oleh manusia: Semua 256 nilai byte yang mungkin dapat direpresentasikan sebagai dua digit hex.
Karena ada pemetaan yang mudah dari data biner ke hex dan sebaliknya (4 digit biner ke / dari satu digit heksadesimal), dan biner berisi sangat sedikit informasi per digit, heksadesimal umumnya merupakan cara yang disukai manusia untuk membaca biner, kecuali ada yang spesifik alasan untuk memilih representasi yang berbeda.
Beberapa editor teks mungkin memiliki mode hex editor dan beberapa heuristik yang mencoba menentukan apakah suatu file adalah teks atau biner, dan secara otomatis memilih satu mode atau yang lain. Tetapi ini bisa sulit untuk dilakukan dengan benar dan itu bukan properti spesifik dari file yang mengatakan apakah itu satu atau lain jenis.
Beberapa klien FTP meminta Anda untuk menentukan ujung file mana yang digunakan untuk data teks . Program-program ini kemudian akan mengubah konten file agar sesuai dengan OS mesin yang terhubung dengan Anda, karena Windows menggunakan urutan karakter akhir baris yang berbeda (
CR/LF
) dari Linux dan Unix (termasuk Mac OS X;LF
).sumber
Karena Anda sudah membukanya di editor teks , bukan editor biner .
sumber
Ini semua berkaitan dengan konteks dan interpretasi. Apa yang ada di komputer Anda adalah pola-pola tegangan tinggi dan rendah, atau wilayah yang termagnetisasi dari disk, yang hanya mendapatkan makna ketika kami memutuskan bagaimana kami ingin menafsirkannya.
Dalam keadaan yang berbeda, pola rendah-tinggi-rendah-rendah-rendah-rendah-tinggi mungkin berarti angka 65, huruf kapital 'A', warna biru langit, bahwa pelanggan memesan kopi, tanggal 'Maret 6 atau apa saja, sungguh.
Saat Anda membuka file gambar dalam program grafik, ia tahu untuk menafsirkannya sebagai gambar, tahu pola mana yang menunjukkan format gambar, pola mana yang menunjukkan ukuran gambar dan sebagainya.
Saat Anda membuka file gambar dalam editor teks, file itu diperlakukan sebagai teks. Ini adalah format yang sangat sederhana, lebih dekat dengan apa yang sebenarnya terjadi di komputer, tetapi masih ada beberapa interpretasi yang terjadi. Secara khusus, hampir setiap pola ditafsirkan sebagai karakter tertentu, beberapa normal seperti AZ, tetapi juga beberapa karakter aneh. Beberapa pola tidak muncul sebagai karakter melainkan diperlakukan sebagai format dasar: baris baru, tab.
(Situasinya sedikit rumit oleh hal-hal seperti Unicode dan penyandian teks seperti UTF-8 tapi saya tidak akan berurusan dengan yang ada di sini hanya karena kesederhanaan.)
Ketika Anda memiliki file biner terbuka di editor teks, berhati-hatilah untuk tidak melakukan perubahan, karena hampir semua perubahan yang Anda buat akan benar-benar mengganggu interpretasi normal dari konten file, yaitu akan merusak file dan membuatnya tidak dapat digunakan.
sumber
Sebagai contoh yang disederhanakan, pertimbangkan file gambar dibuka dengan editor teks.
Gambar adalah pola catur sederhana, dengan lebar kotak 3 piksel dan batas abu-abu 1-piksel antara setiap kotak. - tiga piksel hitam, piksel batas abu-abu, tiga piksel putih, piksel perbatasan abu-abu, ulangi.
Baris pertama dalam gambar itu memiliki nilai berikut empat kali:
(Dalam Hex, daripada Binary - string dalam Binary akan empat kali lebih panjang - 0x7F diganti dengan 0b01111111)
Jika Anda memuat string data dalam editor teks, Anda akan mendapatkan teks berikut:
[Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Del] [Del] [Del] [Del] [Kosong] [Kosong] [Kosong] [Kosong] [Kosong] [Kosong] [Kosong] ] [Kosong] [Kosong] [Kosong] [Kosong] [Del] [Del] [Del]
Ini karena 0x00 adalah kode ASCII untuk nilai Null dan Anda perlu menulis itu 3 kali untuk mendapatkan nilai untuk piksel hitam (dalam BMP 24bit) dan Anda memiliki 3 piksel hitam. Maka 0x7F adalah kode ASCII untuk Hapus, dan Anda perlu ITU tiga kali untuk mendapatkan piksel abu-abu. 0xFF bukan kode ASCII yang valid untuk hal tertentu - bahkan dalam set ASCII yang diperluas - dan Anda perlu menulisnya 9 kali untuk mendapatkan 3 piksel putih. Setelah selesai, Anda mendapatkan tiga Hapus lagi untuk menulis piksel abu-abu.
Cara berbeda untuk menunjukkannya, yang mungkin lebih bermanfaat adalah penjelasan, adalah contoh sebaliknya - APA yang harus Anda tulis ke file untuk mendapatkan angka nol dan angka ketika dibuka di editor teks?
Kode ASCII untuk nol dan satu, tentu saja! Nol dalam editor teks tidak disimpan sebagai bit tunggal dengan nilai 0, disimpan sebagai 8 bit dengan nilai 0b00110000, atau dalam hex 0x30
Kode ASCII untuk '0' adalah 0x30, dan kode ASCII untuk '1' adalah 0x31, jadi jika Anda ingin menyimpan pola catur sebagai angka nol dan angka, file Anda akan terlihat seperti ini:
Ada banyak hal yang lebih dari ini - file sudah mulai dan berhenti dan metadata dan semua hal lainnya, tetapi pelajaran yang bisa diambil dan jawaban untuk pertanyaan Anda adalah:
Kecuali 8 bit pertama file Anda adalah 0b00110000, editor teks Anda tidak akan menulis '0' karena itu adalah kode ASCII untuk karakter '0'. Kecuali 8 bit pertama dari file Anda adalah 0b00110001, editor teks Anda tidak akan menulis '1' karena itu adalah kode ASCII untuk karakter '1'.
sumber
Editor tidak cukup pintar untuk mengetahui apakah beberapa teks masuk akal atau tidak, sehingga menampilkan file apa pun sebagai teks kecuali secara khusus diperintahkan untuk melakukan sebaliknya, jika ia memiliki fitur itu. Seperti orang lain tunjukkan, beberapa editor memiliki fitur menampilkan hex.
sumber