pack

Syntax

pack(format, args…)

Details

Packs the data into a binary byte stream according to the format specified by format.

Parameters

format is a format string. See Appendix: Format Characters.
  • A format character may be preceded by an integral repeat count. For example, the format string 4h means exactly the same as hhhh.

  • Whitespace characters between formats are ignored; a count and its format must not contain whitespace though.

  • For the s format character, the count is interpreted as the length of the bytes, not a repeat count like for the other format characters; for example, 10s means a single 10-byte string, while 10c means 10 characters. If a count is not given, it defaults to 1. The string is truncated or padded with null bytes as appropriate to make it fit.

args... The data to be packed. The arguments must match the values required by the format exactly.

Returns

Returns a bytes object packed according to the format string format.

Examples

res = pack("N",1);
res1 = unpack("N", res);
print(res1)
// output: (1)

res = pack("iii", 1, 2, 3)
res1 = unpack("iii",  res);
print(res1)
// output: (1,2,3)

res = pack("x",NULL)
res = unpack("x",pack("x",NULL))
typestr(res[0])
// output: VOID

res = pack("3si", `123, 3)
res1 = unpack("3si",  res);
print(res1)
// output: ("123",3)

Related function: unpack

Appendix

Format Characters

Format mapping:

Format C Type Python Type DolphinDB Type Range
x pad byte no value VOID
c char bytes of length 1 CHAR -27 +1~27 -1
b signed char integer LONG -27 ~27 -1
B unsigned char integer LONG 0~28 -1
? _Bool bool LONG -263 ~263 -1
h short integer LONG -215 ~215 -1
H unsigned short integer LONG 0~216 -1
i int integer LONG -231 ~231 -1
I unsigned int integer LONG 0~232 -1
l long integer LONG -231~231 -1
L unsigned long integer LONG 0~232 -1
q long long integer LONG -263 ~263 -1
Q unsigned long long integer LONG 0~263 -1
n ssize_t integer LONG -263 ~263 -1
N size_t integer LONG 0~263 -1
f float float LONG -3.40E+38 ~ +3.40E+38
d double float LONG -1.79E+308 ~ +1.79E+308
s char[] bytes STRING
p char[] bytes STRING
P void* integer LONG -263 ~263 -1

Byte Order, Size, and Alignment

Character Byte order Size Alignment
> big-endian standard none
= native standard none
< little-endian standard none
@ native native native
! network
(= big-endian) native none

The first character of the format string can be used to indicate the byte order, size and alignment of the packed data, see "Appendix: Byte Order, Size and Alignment". If the first character is not one of these characters, '@' is assumed.