Thursday, 7 May 2015

10.4.Menyimpan Data Binary

Untuk membuat file data berbasis binary kita memerlukan sebuah file yang berextension bin(*.bin). Pada Python membuat file tersebut menggunakan perintah open dengan 'wb' (write binary) mode. Lalu menggunakan perintah 'struct' untuk membuat suatu data menjadi binary.

Dengan perintan 'struct' kita diharuskan untuk memberikan format data terlebih dahulu, sebelumnya melanjutkan, kita lihat dahulu fomatnya.
Format
C type
Python
Keterangan
x
Pad byte Tidak ada nilai

c
char Bytes

b
signed char Integer Support str utf-8
B
unsigned char Integer

?
_Bool bool _Bool type C99, Bila bukan, menjadi char
h
short Integer

H
Unsignes short Integer

i
int Integer

I
Unsigned int Integer

l
long Integer

L
Unsigned long Integer

q
Long long Integer Native mode windows -int64
Q
Unsigned long long Integer Native mode windows -int64
f
float float

D
double float

s
char[] Bytes Support str utf-8
p
char[] Bytes Support str utf-8
P
void Integer


Untuk fomat string ditulis dengan '4h' yang isi sama dengan 'hhhh'. tempat kosong (spasi) tidak dihitung, 
Untuk 's' format karakter, penghitungannya sepanjang bytes-nya, contohnya:
'10s' berarti ada sebuah 10 bytes string.
Dan '10c' berarti ada 10 karakter.Untuk 'p' merupakan 'Pascal String' yang berarti panjang variable string yang pendek disimpan dalam suatu byte yang tetap.


Ada juga format string yang lain, merupakan indikator byte order.
Karakter
Byte Order
@
Native Native
=
Native Standar
<
little-endian Standar
>
big-endian Standar
!
Network (=big-endian) Standar




  1. >>> struct.pack('h',1)
  2. b'\x01\x00'
  3. >>> struct.pack('l',1)
  4. b'\x01\x00\x00\x00'
  5. >>> v1=struct.pack('iiii',1,2,3,4)
  6. >>> v2=struct.pack('4i',5,6,7,8)
  7. >>> v1
  8. b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'
  9. >>> v2
  10. b'\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00'
  11. >>> 

Baris ke 5 dan baris ke 6 adalah sama, beda penulisannya saja.
Dan untuk mendapatkan kembali data dari v1 dan v2, kita gunakan 'struct.unpack()'

  1. >>> uv1=struct.unpack('4i',v1)
  2. >>> uv2=struct.unpack('iiii',v2)
  3. >>> uv1
  4. (1, 2, 3, 4)
  5. >>> uv2
  6. (5, 6, 7, 8)
  7. >>> 

--








No comments:

Post a Comment