Binn (formát serializace) - Binn (serialization format)
Úložiště | github |
---|---|
Typ | Výměna dat |
Licence | Apache 2.0 |
webová stránka | github![]() |
Binn je počítač formát serializace dat používá se hlavně pro aplikaci přenos dat. Ukládá to primitivní datové typy a datové struktury v binární formě.[1]
Výkon
Formát Binn je navržen tak, aby byl kompaktní a rychlý při čtení. Prvky jsou uloženy s jejich velikostmi, aby se zvýšil výkon čtení. Řetězce jsou zakončeny hodnotou null, takže při čtení knihovna vrátí ukazatel uvnitř vyrovnávací paměti, aby se zabránilo alokace paměti a kopírování dat, operace známá jako nulová kopie.
Typy dat
Primitivní datové typy:
- nula
- booleovský (
skutečný
aNepravdivé
) - celé číslo (až 64 bitů podepsáno nebo nepodepsáno)
- čísla s plovoucí desetinnou čárkou (IEEE jednoduchá / dvojitá přesnost)
- tětiva
- blob (binární data)
- Definováno uživatelem
Kontejnery:
- seznam
- mapa (číselná klávesa asociativní pole )
- objekt (asociativní pole textového klíče)
Formát
Binnovy struktury se skládají ze seznamu elementy. Každý prvek má typ, za kterým může následovat velikost, počet interních položek a samotná data:
boolean, null: [typ] int, float (úložiště: bajt, slovo, dword nebo qword): [typ] [data] řetězec, blob: [typ] [velikost] [data] seznam, objekt, mapa: [typ] [velikost] [počet] [data]
Příklad kódování
A JSON údaje jako {"Ahoj světe"}
je serializován v binn se stejnou velikostí:
\xE2 // typ = objekt (kontejner) \x11 // celková velikost kontejneru \x01 // položky v kontejneru (v tomto případě páry klíč / hodnota) \x05 ahoj // název pole \xA0 // typ = řetězec \x05svět\x00 // hodnota pole (null ukončeno)
Příklad kódu
Zápis do objektu v C:
// vytvoření nového objektu binn * obj = binn_object(); // přidejte k tomu hodnoty binn_object_set_int32(obj, „id“, 123); binn_object_set_str(obj, "název", "John"); binn_object_set_double(obj, "celkový", 2.55); // odeslání přes síť nebo uložení do souboru ... poslat(ponožka, binn_ptr(obj), binn_size(obj)); // uvolnění vyrovnávací paměti binn_free(obj);
Čtení z tohoto objektu:
int id = binn_object_int32(obj, „id“); char * název = binn_object_str(obj, "název"); dvojnásobek celkový = binn_object_double(obj, "celkový");
Viz také
Použití
- LiteReplica, SQLite replikace a point-in-time zotavení nástroj.
- EJDB2, Vložitelná knihovna JSON Database Engine C.
- GameAP „Panel správy herních serverů.