Binn (formát serializace) - Binn (serialization format)

Binn
Úložištěgithub.com/ liteserver/ binn
TypVýměna dat
LicenceApache 2.0
webová stránkagithub.com/ liteserver/ binn Upravte to na Wikidata

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ý a Nepravdivé)
  • 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ů.

Reference

externí odkazy