Posts Tagged ‘FTI’

Kompresi SMS

Posted: July 27, 2008 in J2ME
Tags: , , , , ,

Januari lalu aku berhasil bikin program buat kompresi SMS.
Intinya sih, SMS yang aslinya cuma muat 160 karakter tiap SMS,
bisa jadi lebih dari 200 karakter.

Last January, I’ve managed to build an SMS Compressor for mobile phones
While normal SMS contains up to 160 characters per package, compressed one can contain more than 200 characters.

Klo sekarang, cocok banget dipake sama kartu esia yang bayar SMS nya per karakter,
karena di programku karakternya dikompres.
Aku bikin pake J2ME.
Btw, terakhir ngecek di getjar.com sama googling, programku ini bisa ngompres paling tinggi dibanding program2 laen yang ada. Tapi tu Februari 2008 klo gak salah, ato Maret gitu.
Programku kerjanya bukan lewat GPRS.. tapi tetep jaringan GSM/CDMA, jadi SMS tu bisa pending (in case hape tujuan lagi diluar area ato mati)

Last time I checked it (around February-March 2008), this program got the highest compression result, when I compared it with another similiar programs at that time.
My program uses GSM/CDMA network, and not using GPRS. It still allows SMSes to pending.

Konsepnya simpel.
Untuk kompresi, misal ada tulisan “mengambil”

Tulisan itu dipisah-pisah dulu, trus dijadiin biner :

The concept is simple.
Let’s put down a string of “mengambil” as a sample.
It then will be separated and converted into binary :

Huruf Heksadesimal (berdasar ASCII) Biner
m 6D 01101101
e 65 01100101
n 6E 01101110
g 67 01100111
a 61 01100001
m 6D 01101101
b 62 01100010
i 69 01101001
l 6C 01101100

nah, dari tabel di atas bisa dilihat bahwa ada kesamaan bit biner yang berulang toh.
(yang warnanya merah)..

We can see from the table above, that there are many similiar bits (the red ones)

Berdasarkan itu, aku potong bagian-bagian yang sama, terus aku sisakan satu aja di awal untaian binernya :

Based on that, I cut the same bits but one I put it in front of the new binary string :

01101101
01011110
01110001
11010010
10011100

Trus untuk menandai saat proses dekripsi, maka aku tambahkan byte penanda sapaya ngerti bagian mana yang nanti kudu didekrip :

Then, to mark the string for decompressing process, I add a sign byte :

11111111 (byte penanda awal / begin sign byte)
01101101
01011110
01110001
11010010
10011100
11111111 (byte penanda akhir / end sign byte)

nah.. sekarang kita bandingkan. “mengambil” terdiri dari 9 karakter. 1 karakter = 1 byte = 8 bit.
Bandingkan dengan hasil kompresinya (di atas).. cuma ada 7 untaian 8 bit = 7 karakter.
Dan semakin panjang untai awal, kompresi yang dilakukan bisa makin besar.

Now e can compare. “mengambil” contained 9 characters. 1 chars = 1 byte = 8 bit.
Compare with the compression result : there are only 7 byte = 7 char.
And so the longer string, the higher compression rate can be done.

Itu namanya algoritma Halfbyte.. tapi di programku, Halfbyte aku modifikasi sedemikian rupa sehingga cocok buat data SMS.
Perlu diketahui bahwa karakter GSM rada beda sama karakter ASCII – toh karakter GSM sama dengan yang dipake di CDMA kok.
Algoritma yang aku hasilkan itu tak kasih nama “Expanded Halfbyte” cie…. Hehehehe..

It is called Hlafbyte algorithm.. But in my program, I modified it so it can be fit with SMS data type.
GSM characters are a bit different with ASCII.
The new algorithm that I modified from Halfbyte, I called it “Expanded Halfbyte”

Modifikasinya yaitu :
Penciptaan byte awal, mengingat pemotongan byte terkompresi tu tiap 4 bit, jadi ada kemungkinan terjadi untai yang bukan kelipatan 8,
jadi disesuaikan dulu.
Penyesuaian dengan karakter GSM.
Yeah, itu penjelasan yang aku rasa paling mendekati tentang apa yang aku buat, hehehe.

The modification are :
Adding starter byte, because I cut the byte per 4 bit, so it is possible that the result string cannot be divided with 8, as supposed to be.
Adjustment with GSM characters.
Maybe those are the best explanation about what I’m doing.

Klo mau programnya, silakan aja

If you’d like to get it, so please click :

download di sini gratis : http://rapidshare.com/files/132871385/Kompresi_SMS.zip.html
atau disini : http://www.geocities.com/winartan_angkin/Kompresi_SMS.zip

Adapun gambaran programku :

Software description :

Berat : 60 Kb doang
Syarat :

  • Hape yang support java MIDP 2.0 & WMA (udah download aja, perkara gak jalan berarti gak bisa, gt aja, hehehe)
  • Untuk bisa kirim SMS terkompresi, hape penerima juga harus memiliki program ini. (To be able to send compressed SMS, receiver’s cellphone should also install this first)
  • Untuk nerima SMS terkompresi, program ini nggak perlu nyala,
    jadi klo ada pesan terkompresi masuk, otomatis nangkep sendiri kok. Jadi programnya mati pun diSMS tetep bisa (gak harus standby nyala terus). (The program doesn’t have to run all the time, it can automaticaly run when a compressed SMS received)

Feature :

  • Send Message + kompres/dekompres
  • Inbox
  • Sent Items
  • Contacts (tetep bisa akses kontak dari hape juga)
  • Archives

notes : berhubung gak gitu serius bikinnya, mungkin masih ada bug… tapi mungkin juga enggak.. kekekeke. OK, silahkan

There might be bugs in the program, as I’m not so serious when making it..
Please feel free to download it

download di sini gratis : http://rapidshare.com/files/132871385/Kompresi_SMS.zip.html
atau disini : http://www.geocities.com/winartan_angkin/Kompresi_SMS.zip

Advertisements