A bináris adatcsomagok funkciói - csomag () és kicsomagolás ()

Valójában két ilyen funkció van: pack () és unpack (). Az első egy bináris karakterláncban végzi el az adatbevitelt, a második pedig kicsomagolja az adatokat egy bináris karakterláncból. Személy szerint én még nem kellett ezeket a funkciókat használni, kivéve, ha példákat használok erre a fejezetre. De ki tudja, talán valaki igazán szüksége van rájuk, szóval szórakoztatunk velük.







A function pack () a paraméterben megadott argumentumokat bináris karakterláncba csomagolja. A paraméterek formátumát és számukat a $ format paraméterrel adják meg. ugyanazon formázási specifikátorok segítségével, amelyekről csak a% jel nélkül beszéltünk. Minden specifikátor után lehet egy szám, amely jelzi, hogy mennyi információt fog feldolgozni a specifikátor. Formátumokhoz a. A. H, H pedig a szám adja meg karakterek számát kell helyezni egy bináris sor is, hogy a paraméter-vonalat, amikor egy funkció (azaz, a méret a kimeneti mező vonal valójában meghatározva). Ha a "@" specifikációt használjuk, akkor meghatározzuk az abszolút pozíciót, amelyben az adatokat elhelyezzük. Az összes többi selejtező esetében a következő számok határozzák meg az ilyen formátumú érvek számát. A szám helyett a * értéket adhatja meg. ebben az esetben a selejtező az összes fennmaradó adatra hat. Vegye figyelembe, hogy a függvény a csomagolt adatokat hexadecimális formátumban adja vissza.







Formátum-specifikátorok listája:

  • a - a vonalat, a mezőben lévő szabad területeket a 0 kóddal jelölt szimbólum tölti ki;
  • A - karakterlánc, az üres terek tele vannak szóközökkel;
  • h - hexadecimális karakterlánc, alacsonyabb rendű számjegyek elején;
  • H - a hexadecimális karakterlánc, a legmagasabb számjegy az elején;
  • c egy aláírt byte (szimbólum);
  • C - előjel nélküli byte;
  • s egy aláírt rövid egész szám;
  • S - aláírás nélküli rövid szám;
  • n egy alá nem írt egész szám (16 bit, nagy sorrendű bit a végén);
  • v - aláírás nélküli egész szám (16 bit, alacsonyabb sorrendű bit a végén);
  • i egy aláírt egész szám (a bájt méretét és sorrendjét az architektúra határozza meg);
  • Én egy aláíratlan egész szám;
  • l egy aláírt hosszú egész szám (32 bit, a jelek sorrendjét az architektúra határozza meg);
  • L - előjel nélküli hosszú egész szám;
  • N - előjel nélküli hosszú egész szám (32 bit, nagy sorrendű bit a végén);
  • V - aláírás nélküli egész szám (32 bit, legkevésbé lényeges bit a végén);
  • f egy lebegőpontos szám;
  • d a dupla pontosság;
  • x egy nulla kód karakter;
  • X - 1 bájttal vissza;
  • @ - nulla kódot tölt be a megadott abszolút pozícióba.

Mint fent említettük, kicsomagolja az adatokat egy bináris karakterláncból a formátum szerint. A függvény egy kicsomagolt elemeket tartalmazó tömböt ad vissza.

Próbáljunk valamit csomagolni. Például.

Tehát amit láttunk: a függvény 6 byte-ot adott vissza, és ebben a sorrendben:

0h57, 0h22, 0x48, 0x11, 0x00, 0h41, 0x00, 0h42. Egyértelmű, hogy miért. Szerint a megadott kapcsolati formátumban (NVN *), az első szám azt vissza, mint egy előjel nélküli egész szám a MSB végén a második is, mint egy előjel nélküli egész szám, de a végén - szignifikáns bit (így visszatért 0x48, 0x11 és nem 0x11, 0x48), és a többiek végéig visszaadunk, mint egy aláírás nélküli egész szám, a végén a legmagasabb számjegyekkel.




Kapcsolódó cikkek