Orang yang menggunakan UE akan merasa sangat nyaman untuk menampilkan file dalam hexadecimal. Mengapa mencubit? Saat Anda ingin mengenkripsi, mentranskode, dan menyandikan file, sekelompok biner 01 akan muncul dan melihatnya. Bagaimanapun, file tampilan heksadesimal pendek dan nyaman. Setidaknya saya telah menerapkan kartu selama ujian masuk sekolah menengah pertama dan ujian masuk perguruan tinggi. Tentu saja, sepatu anak -anak yang dapat melukis 1248 di ujian masuk sekolah menengah dan ujian masuk perguruan tinggi dapat mengatakan dengan sekilas bahwa mereka pasti tidak akan memiliki kesempatan untuk menjadi profesi pemrogram yang "sakral" ...
Karena saya mencoba untuk berpartisipasi dalam kompetisi inovasi popularisasi sains sebelumnya, saya melakukan Dongdong pada waktu itu, membaca file dalam aliran byte dan mengubahnya menjadi biner, quad, dan string heksadesimal, dan kemudian mengeluarkannya ke konsol sekaligus. Kemudian, sesuai dengan nilai masing -masing bit, itu ditampilkan dalam matriks 2 warna, 4 warna dan 16 warna masing -masing. Tujuan menulis ini adalah untuk menggunakan kamera untuk mengidentifikasinya, dan kemudian mengembalikannya ke aliran byte dan menulisnya ke file. Desain program ini adalah produk dari hibrida dari dua fakta yang menyakitkan - 1. Ini tidak memerlukan transfer file melalui media dan perangkat USB apa pun; Anda dapat mencoba pertanyaan ini, menggunakan kamera atau speaker untuk mengirim dan menerima file untuk melihat siapa yang dapat mengirimkannya dengan cepat.
Tentu saja, bagian terpenting adalah bahwa aliran byte file dibaca menjadi 8 byt byte, dan ditampilkan dalam dua hexadecimals. Karena Anda dapat menemukan situasi di mana byte dikonversi menjadi kode int dan komplemen, yang terbaik adalah menyatukannya menjadi angka positif terlebih dahulu.
Salinan kode adalah sebagai berikut:
Hasil int = byte & 0xff;
Jangan meremehkan kalimat ini, sebenarnya sangat menarik. Pikirkan dengan cermat, jika Anda menambahkan 0xff ke shenma dan itu menjadi angka positif? 0xff IS 1, jadi bukan berarti tidak ada perubahan dalam operasi? Humph, seseorang telah menanyakan hal ini sebelumnya. Kisaran byte adalah -128 ~ 127, bukan 0 ~ 255, jadi, penugasan seperti byte b = -42;
Tidak sulit untuk membuatnya dan mengubahnya menjadi string N digit. Jika Anda memikirkannya dengan hati -hati, apakah ada kelas yang akrab tetapi tidak dikenal yang secara langsung membawa fungsi ini? Itu benar, itu hanya menggunakan Integer! Tapi jangan khawatir, sebelum menggunakannya, Anda harus melakukan beberapa gerakan kecil pada int ini.
Salinan kode adalah sebagai berikut:
(bytes & 0xff) + 0x100
Apakah Anda tahu mengapa? Ini +256, hanya untuk melihatnya lebih intuitif, cukup tambahkan satu di depan. Karena jika int yang Anda dapatkan dikonversi menjadi string, kemungkinan hanya ada satu bit, yaitu, jika byte hilang ketika heksadesimal dikonversi menjadi heksadesimal, maka akankah seluruh program akan benar -benar salah tempat? Agar aman, lebih baik menyatukan tiga.
Anda dapat mencoba ini untuk melihat semua output setelah byte diubah menjadi hexadecimal
Salinan kode adalah sebagai berikut:
public static void main (string [] args) {
untuk (int i = -128; i <128; i ++) {
byte b = (byte) i;
System.out.println (integer.tostring ((B & 0xff), 16));
}
}
Melihat ini, menurut Anda: Mengapa Anda begitu bodoh? Mengapa Int In The For Loop diubah menjadi byte? Oke, Anda bisa mencobanya, saya tidak akan mencobanya ...
Jadi, kode yang akhirnya mengubah byte menjadi hexadecimal dua-bit
Salinan kode adalah sebagai berikut:
Integer.tostring ((bytes & 0xff) + 0x100, 16) .substring (1);
Untuk biner, quad dan oktal, semuanya sama, jadi saya tidak akan memberikan contoh. Ini diimplementasikan hanya dalam satu kalimat kode, itu luar biasa ...
Selanjutnya, gunakan kisi matriks untuk menampilkan bingkai file berdasarkan bingkai, gunakan kamera untuk menangkap warna pengenalan, kemudian mengonversi string, dan umpan balik warna untuk memberi tahu pihak lain bahwa pengakuan selesai dan kemudian mengganti gambar berikutnya. .. Siklus ini sampai kisi matriks file telah berakhir. Saya tidak akan memposting bagian kode ini, seluruh proses dapat diproduksi oleh YY dengan imajinasi yang kaya ...
Kemudian string diputar kembali ke aliran byte, yang sederhana untuk hidup
Salinan kode adalah sebagai berikut:
(byte) integer.parseint (string, 16)
Anda bahkan tidak memerlukan operasi bit, cukup hasilkan hasilnya, masukkan ke dalam array byte, dan tulis berulang kali dengan Write FileOutputStream! Jangan lupa untuk mematikan aliran input dan output