Proses Decoding Perbandingan kompresi teks menggunakan algoritma huffman statis, huffman dinamis dan modifikasi algoritma huffman.

dalam proses decoding. Pemisah tersebut memisahkan nama file log, jenis algoritma yang digunakan dan isi dari kode biner yang baru.

4.2 Proses Decoding

Proses yang kedua adalah proses decoding yaitu proses mengembalikan data biner hasil kompresi menjadi data awal. Terdapat beberapa proses yang ada, antara lain sebagai berikut.

4.2.1 Implementasi Proses Baca Teks File Kompresi

Setelah proses encoding sudah dilakukan semua, maka akan menghasilkan file hasil kompresi bertipe .NFC. Untuk mengubah kode seperti semula maka harus dilakukan tiga tahap yaitu proses baca file kompresi, pengubahan kode dan yang terakhir adalah membuat file bertipe .TXT seperti format teks awal. Pada proses ini terdapat dua proses yaitu memilih file dan membaca file.

4.2.1.1 Memilih File

Gambar 4.17 Implementasi proses memilih file decoding Sama seperti cara memilih file pada saat akan mengkompresi, saya menggunakan kelas JFileChooser dan menggunakan WindowsLookAndFeel untuk menampilkan kotak dialog seperti aplikasi yang berjalan pada sistem operasi Windows. Perubahan hanya terjadi di FileFilter yang dirubah menjadi .NFC yang berarti hanya menampilkan file berekstensi .NFC.

4.2.1.2 Membaca File

Gambar 4.18 Implementasi proses membaca file decoding Proses berikutnya adalah membaca file kompresi, penulis menggunakan method dari Java yaitu Files.readAllBytes yang mempunyai keunggulan membaca semua karakter di dalam sebuah file tanpa terkecuali. Setelah semua karakter terbaca maka akan dilakukan pembagian menjadi tiga data yang telah dipisahkan oleh kata “sb” tadi. Tiga data tersebut adalah nama file log, jenis algoritma yang digunakan dan data inti yang berisi kode baru. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

4.2.2 Implementasi Proses Pengubahan Kode Decoding

Pada proses pengubahan kode ini, tiga data hasil dari proses sebelumnya akan diolah sesuai kebutuhan masing-masing. Dari tiga data tersebut akan terbentuk dua sub proses yaitu proses decoding header dan proses decoding isi. Selain itu akan dibahas juga proses decoding untuk ketiga algoritma Huffman.

4.2.2.1 Proses Decoding Header

Gambar 4.19 Implementasi proses decoding header Pada proses ini, file log yang sudah dibuat akan dibaca kembali dengan cara mencocokan nama file log pada data hasil yang pertama dengan nama file yang ada di dalam folder. Setelah file log sesuai maka akan dilakukan proses stream bertipe objek. Pemilihan stream bertipe objek didasarkan untuk mempermudah dalam pengambilan data, sehingga data kode biner dan huruf tidak terpisah atau tertukar.

4.2.2.2 Proses Decoding Isi

Gambar 4.20 Implementasi proses decoding isi Pada method ini merupakan inti dari proses decoding yaitu dengan mengembalikan kode yang telah diubah sebelumnya. Data yang digunakan adalah data ketiga dari hasil pemecahan pada proses membaca file. Seperti yang telah dijelaskan pada sub bab sebelumnya, bahwa proses encoding adalah mengubah setiap tujuh bit menjadi sebuah karakter baru. Karena terkadang tidak semua jumlah bit habis dibagi tujuh, maka sisa dari pembagian akan ditulis paling belakang. Sebagai contoh sebuah teks setelah diubah menjadi data biner berjumlah 52 bit maka jika dibagi tiap 7 bit akan menghasilkan 7 karakter dengan sisa 3 bit, maka di akhir data akan dituliskan 3 sebagai penanda sisa bit. Penulisan sisa ini akan berguna dalam proses pengubahan menjadi data biner kembali, sebelum di decoding. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Di dalam method terdapat variabel akhir yang berisi sisa dari pembagian. Jika nilai akhir adalah 0, maka data biner tersebut habis di bagi tujuh dan dapat langsung diubah kembali karakter-karakter di dalam data menjadi biner. Jika nilai akhir tidak 0 maka karakter terakhir akan di proses terpisah setelah karakter lain telah diubah menjadi biner. Pemisahan ini dilakukan karena harus menggunakan syntax yang berbeda. Di dalam method tersebut, perintah yang menjadi inti adalah String.format“7s”, Integer.toBinaryStringc.replace‘ ‘,’0’. Perintah tersebut berarti mengubah karakter c menjadi Integer biner dengan jumlah bit sebanyak 7, ditulis dengan perintah “7s”. Perintah “replace‘ ‘,’0’” berarti mengganti tempat yang kosong dengan angka 0, karena secara default setelah proses pengubahan tersebut angka 0 akan menjadi kosong.

4.2.2.3 Proses Decoding Huffman Dinamis dan Huffman Statis

Gambar 4.21 Implementasi proses decoding Huffman Dinamis dan Huffman Statis PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Proses decoding untuk Huffman Statis dan Huffman Dinamis memiliki cara yang sama, karena tidak memakan separator seperti pada Huffman modifikasi yang penulis buat. Dalam membentuk hasil, penulis menggunakan StringBuilder untuk memudahkan dalam menggabungkan setiap String sehingga menjadi sebuah kata. Langkah pertama adalah membentuk sebuah objek StringBuilder dan kemudian melakukan loop hingga semua data habis. Dalam melakukan loop, data akan dicocokan dengan data header. Jika kode sesuai maka akan menambahkan karakter yang sesuai ke objek StringBuilder hingga membentuk sebuah kata atau kalimat.

4.2.2.4 Proses Decoding Huffman Modifikasi

Gambar 4.22 Implementasi proses decoding Huffman Modifikasi Pada proses decoding Huffman Modifikasi ini berbeda dengan proses decoding Huffman Dinamis dan Huffman Statis. Proses yang dilakukan harus mengecek bit selanjutnya. Penulis membuat suatu kondisi jika bit selanjutnya tidak sama maka akan mengecek dengan data yang tersimpan pada log. Kondisi ini dibuat penulis karena pada dasarnya algoritma Huffman Modifikasi ini setiap karakter memiliki bit yang sama, satu karakter bisa bernilai 1 atau 0 semua. Dalam menggabungkan setiap karakter, method ini juga menggunakan StringBuilder.

4.2.3 Implementasi Proses Pembentukan File Hasil Decoding

Gambar 4.23 Implementasi proses pembentukan file decoding Proses ini merupakan proses terakhir dalam melakukan decoding yaitu membuat file hasil. Setelah proses decoding selesai dan menghasilkan suatu kata atau kalimat, langkah selanjutnya adalah proses Stream dengan menggunakan kelas PrintWriter. File hasil yang dihasilkan berekstensi .TXT dan akan dibuat di dalam folder bersamaan dengan file .NFC. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 70 5 BAB V PENGUJIAN DAN ANALISIS BAB V PENGUJIAN DAN ANALISIS Penulis akan melakukan pengujian terhadap ketiga algoritma dengan didasarkan pada kecepatan proses encoding dan ukuran file hasil kompresi. Pengujian tersebut dipilih oleh penulis karena dalam bidang kompresi selain ketepatan hasil decoding, kedua faktor pengujian tersebut juga penting untuk dilakukan.

5.1 Perbandingan Jumlah Bit