This is a draft.
Data encoding is typed.
Data types are preceeding the data and they are encoded using a 8-bit marker.
Data is encoded as big-endian.
The following are the value ranges of the data markers.
0b0XXXXXXX => positive immediate value
0b100XXXXX => ASCII string immediate size
0b1010XXXX => array immediate size
0b1011XXXX => map immediate size
0b110000XX => array
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => flex array
0b110001XX => map
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => flex map
0b110010XX => unsigned integer
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => 64-bit size extension
0b110011XX => signed integer
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => 64-bit size extension
0b110100XX => ASCII string
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => reserved
0b110101XX => binary
00 => 8-bit size extension
01 => 16-bit size extension
10 => 32-bit size extension
11 => reserved
0b1101100X => reserved
0b1101101X => floating point
0 => 32-bit floating point
1 => 64-bit floating point
0b1101110X => boolean
0 => false
1 => true
0b11011110 => null
0b11011111 => terminator
0b111XXXXX => negative immediate value