diff --git a/include/pickle.h b/include/pickle.h
index 9fc087c1861fbbd3b8463840b373794c3a0b19e0..ac3fea07539ac7bd64308aa6142a861e06ddd71e 100644
--- a/include/pickle.h
+++ b/include/pickle.h
@@ -228,4 +228,17 @@ pack_lstr(char *buf, const void *str, uint32_t len)
 	return (char *) memcpy(pack_varint32(buf, len), str, len) + len;
 }
 
+#define pack_u(bits)						\
+static inline char *						\
+pack_u##bits(char *buf, uint##bits##_t val)			\
+{								\
+	*(uint##bits##_t *) buf = val;				\
+	return buf + sizeof(uint##bits##_t);			\
+}
+
+pack_u(8)
+pack_u(16)
+pack_u(32)
+pack_u(64)
+
 #endif /* TARANTOOL_PICKLE_H_INCLUDED */