KEKS can store various primitive scalar types (strings, integers, ...) and container types (lists, maps, ...). Serialisation process is just emitting the TLV-like encoding for each item recursively.
Possible values for the tag:
dec | hex | bin | vlen | description |
---|---|---|---|---|
000 | 00 | 00000000 | 0 | EOC |
001 | 01 | 00000001 | 0 | NIL |
002 | 02 | 00000010 | 0 | FALSE |
003 | 03 | 00000011 | 0 | TRUE |
004 | 04 | 00000100 | 16 | HEXLET |
[...] | ||||
008 | 08 | 00001000 | 0 | LIST |
009 | 09 | 00001001 | 0 | MAP |
010 | 0A | 00001010 | ||
011 | 0B | 00001011 | 8+~ | BLOB |
012 | 0C | 00001100 | 1+~ | +INT |
013 | 0D | 00001101 | 1+~ | -INT |
[...] | ||||
016 | 10 | 00010000 | 2 | FLOAT16 |
017 | 11 | 00010001 | 4 | FLOAT32 |
018 | 12 | 00010010 | 8 | FLOAT64 |
019 | 13 | 00010011 | 16 | FLOAT128 |
020 | 14 | 00010100 | 32 | FLOAT256 |
[...] | ||||
024 | 18 | 00011000 | 8 | TAI64 |
025 | 19 | 00011001 | 12 | TAI64N |
026 | 1A | 00011010 | 16 | TAI64NA |
[...] | ||||
075 | 4B | 01001011 | 15 | MAGIC |
[...] | ||||
128 | 80 | 10LLLLLL | 0 | BIN(len=0) |
[...] | ||||
188 | BC | 10111100 | 60 | BIN(len=60) |
189 | BD | 10111101 | 1+~ | BIN(len of 8b) |
190 | BE | 10111110 | 2+~ | BIN(len of 16b) |
191 | BF | 10111111 | 8+~ | BIN(len of 64b) |
192 | C0 | 11LLLLLL | 0 | STR(len=0) |
[...] | ||||
252 | FC | 11111100 | 60 | STR(len=60) |
253 | FD | 11111101 | 1+~ | STR(len of 8b) |
254 | FE | 11111110 | 2+~ | STR(len of 16b) |
255 | FF | 11111111 | 8+~ | STR(len of 64b) |
• Encoding table: | ||
• Primitives: | ||
• HEXLET: | ||
• Strings: | ||
• Integers: | ||
• Floats: | ||
• TAI64: | ||
• MAGIC: | ||
• LIST: | ||
• MAP: | ||
• BLOB: |