Skip to content

Serialization examples

Integer of value 1

q)-8!1i
0x010000000d000000fa01000000
bytes semantics
0x01 architecture used for encoding the message, big endian (0) or little endian (1)
00 message type (0 – async, 1 – sync, 2 – response)
0000
0d000000 msg length (13)
fa type of item following (-6, meaning a 4-byte integer follows)
01000000 the 4-byte int value (1)

Integer vector

q)-8!enlist 1i
0x010000001200000006000100000001000000
bytes semantics
0x01 little endian
000000
12000000 message length
06 type (int vector)
00 attributes (00 – none, 01 – s, 02 – u, 03 – p, 04 – g)
01000000 vector length (1)
01000000 the item, a 4 byte integer (1)

Byte vector

q)-8!`byte$til 5
0x01000000130000000400050000000001020304
bytes semantics
0x01 little endian
000000
13000000 message length
04 type (byte vector)
00 attributes
05000000 vector length (5)
0001020304 the 5 bytes

General list

q)-8!`byte$enlist til 5
0x01000000190000000000010000000400050000000001020304
bytes semantics
0x01 little endian
000000
19000000 message length
00 type (list)
00 attributes
01000000 list length (1)
04 type (byte vector)
00 attributes
05000000 vector length (5)
0001020304 the 5 bytes

Dictionary with atom values

q)-8!`a`b!2 3i
0x0100000021000000630b0002000000610062000600020000000200000003000000
bytes semantics
0x01 little endian
000000
21000000 message length
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
02000000 vector length
6100 null terminated symbol (`a)
6200 null terminated symbol (`b)
06 type (6 – integer vector)
00 attributes
02000000 vector length
02000000 1st item (2)
03000000 2nd item (3)

Sorted dictionary with atom values

q)-8!`s#`a`b!2 3i
0x01000000210000007f0b0102000000610062000600020000000200000003000000
bytes semantics
0x01 little endian
000000
21000000 message length
7f type (127 – sorted dict)
0b type (11 – symbol vector)
01 attributes (`s#)
02000000 vector length
6100 null terminated symbol (`a)
6200 null terminated symbol (`b)
06 type (6 – integer vector)
00 attributes
02000000 vector length
02000000 1st item (2)
03000000 2nd item (3)

Dictionary with vector values

q)-8!`a`b!enlist each 2 3i
0x010000002d000000630b0002000000610062000000020000000600010000000200000006000100000003000000
bytes semantics
0x01 little endian
000000
2d000000 message length
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
02000000 vector length (2)
6100 null terminated symbol (`a)
6200 null terminated symbol (`b)
00 type (0 – list)
00 attributes
02000000 list length (2)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
02000000 1st item (2)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
03000000 1st item (3)

Table

Note the relation to the previous example.

q)-8!'(flip`a`b!enlist each 2 3i;([]a:enlist 2i;b:enlist 3i))
0x010000002f0000006200630b0002000000610062000000020000000600010000000200000006000100000003000000
0x010000002f0000006200630b0002000000610062000000020000000600010000000200000006000100000003000000
bytes semantics
0x01 little endian
000000
2f000000 message length
62 type (98 – table)
00 attributes
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
02000000 vector length (2)
6100 null terminated symbol (`a)
6200 null terminated symbol (`b)
00 type (0 – list)
00 attributes
02000000 list length (2)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
02000000 1st item (2)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
03000000 1st item (3)

Sorted table

Note the relation to the previous example.

q)-8!`s#([]a:enlist 2i;b:enlist 3i)
0x010000002f0000006201630b0002000000610062000000020000000603010000000200000006000100000003000000
bytes semantics
0x01 little endian
000000
2f000000 message length
62 type (98 – table)
01 attributes (`s#)
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
02000000 vector length (2)
6100 null terminated symbol (`a)
6200 null terminated symbol (`b)
00 type (0 – list)
00 attributes
02000000 list length (2)
06 type (6 – int vector)
03 attributes (`p#)
01000000 vector length (1)
02000000 1st item (2)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
03000000 1st item (3)

Keyed table

q)-8!([a:enlist 2i]b:enlist 3i)
0x010000003f000000636200630b00010000006100000001000000060001000000020000006200630b0001000000620000000100000006000100000003000000
bytes semantics
0x01 little endian
000000
3f000000 message length
63 type (99 – dict)
62 type (98 – table)
00 attributes
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
01000000 vector length (1)
6100 null terminated symbol (`a)
00 type (0 – list)
00 attributes
01000000 vector length (1)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
02000000 1st item (2)
62 type (98 – table)
00 attributes
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
01000000 vector length (1)
6200 null terminated symbol (`b)
00 type (0 – list)
00 attributes
01000000 vector length (1)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
03000000 1st item (3)

Sorted keyed table

Note the relation to the previous example.

q)-8!`s#([a:enlist 2i]b:enlist 3i)
0x010000003f0000007f6201630b00010000006100000001000000060001000000020000006200630b0001000000620000000100000006000100000003000000
bytes semantics
0x01 little endian
000000
3f000000 message length
7f type (127 – sorted dict)
62 type (98 – table)
01 attributes (`s#)
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
01000000 vector length (1)
6100 null terminated symbol (`a)
00 type (0 – list)
00 attributes
01000000 vector length (1)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
02000000 1st item (2)
62 type (98 – table)
00 attributes
63 type (99 – dict)
0b type (11 – symbol vector)
00 attributes
01000000 vector length (1)
6200 null terminated symbol (`b)
00 type (0 – list)
00 attributes
01000000 vector length (1)
06 type (6 – int vector)
00 attributes
01000000 vector length (1)
03000000 1st item (3)

Function

q)-8!{x+y}
0x010000001500000064000a00050000007b782b797d
bytes semantics
0x01 little endian
000000
15000000 message length
64 type (100 – lambda)
00 null terminated context (root)
0a type (10 – char vector)
00 attributes
05000000 vector length
7b782b797d {x+y}

Function in a non-root context

q)\d .d
q.d)test:{x+y}
q.d)-8!test
0x01000000160000006464000a00050000007b782b797d
bytes semantics
0x01 little endian
000000
16000000 message length
64 type (100 – lambda)
6400 null terminated context (.d)
0a type (10 – char vector)
00 attributes
05000000 length (5)
7b782b797d {x+y}

Enumerations are automatically converted to values before sending through IPC.


Interprocess communication