Contoh cara untuk mentransformasi dari bilangan berbasis 10 ke bilangan berbasis 2 adalah sebagai berikut, misalnya angka 6 berbasis 10 akan dirubah menjadi bilangan berbasis 2, yaitu dengan cara :
6 : 2 = 3 sisa 0 3 : 2 = 1 sisa 1 1 : 2 = 0 sisa 1
jadi hasilnya disusun terbalik dari hasil di atas menjadi 110 berbasis 2
Untuk mengebalikan bilangan berbasis 2 ke bilangan berbasis 10 yaitu dengan cara sebagai berikut :
110 ditransformasi dengan cara
110 basis 2 = 2^2*1 + 2*1 + 0 = 4 + 2 + 0 = 6
Contoh cara mentransformasi dari bilangan berbasis 10 ke bilangan berbasis 16 adalah sebagai berikut, misalnya angka 500 berbasis 10 akan dirubah menjadi bilangan berbasis 16, yaitu dengan cara :
500 : 16 = 31 sisa 4 31 : 16 = 1 sisa 15 atau diganti dengan simbol F 1 : 16 = 0 sisa 1
jadi haslinya menjadi 1F4. Untuk mengembalikan bilangan berbasis 16 menjadi bilangan berbasis 10 dengan cara seperti di atas
1F4 basis 16 = 16^2*1 + 16*15 + 4 = 256 + 240 + 4 = 500
Dengan menggunakan prinsip dasar di atas kita aplikasikan pada bilangan berbasis 256, dan digunakan pada penyimpanan data angka ke dalam file yang dimampatkan dengan menggunakan algoritma di atas.
Saya buat contoh dalam bahasa pemrograman delphi seperti berikut :
function Convert(value:real):string; var j:int64; i:integer; e:byte; s:string; begin result:=''; i:=0; if value=0 then while length(result)0 then begin value:=strtofloat(copy(s,1,e-1)); i:=strtoint(copy(s,e+1,length(s)-e)); end; if value>mxint then begin while value>mxint do begin value:=value/10; inc(i); end; j:=round(value); end else begin while value0 then for i:=1 to round(j) do result:=result*10 else for i:=1 to -round(j) do result:=result/10; end; function Invers(data:Array of Char):real; var i:byte; j:real; begin result:=0; j:=1; for i:=high(data) downto low(data)+1 do begin result:=result+ord(data[i])*j; j:=j*256; end; result:=result-mxint+1; j:=ord(data[low(data)])-127; if j>0 then for i:=1 to round(j) do result:=result*10 else for i:=1 to -round(j) do result:=result/10; end;
Sebelum dikompress/dimampatkan :
Setelah dimampatkan :
Setelah dikembalikan ke keadaan semula :
sebagai perbandingan file yang dibuat :
Script lengkapnya dapat di download di sini
wah... jos gandos... mantep.... sudah saya coba tp untuk data real 10 000 000 ternyata aplikasinya error mas bro...
BalasHapusmau tanya.... Kalo memampatkan array byte yang panjang ke array byte yang lebih pendek bisa tidak mas??? dan juga mengembalikan array byte panjangnya seperti semula..... matur tingkyu sebelumnya.
Tentu saja muncul error, karena program ini di desain terbatas. Insyaallah pada posting berikutnya akan saya perbaiki.
BalasHapus