Python-like 'struct' for Nim
This library is still under development, use it as yourown risk!
Character | Byte order |
@ | native |
= | native |
< | little-endian |
> | big-endian |
! | network (= big-endian) |
Notes:
- Unlike Python -byte-order can specified once as first character, with this implementation, you can change byte-order anywhere and anytime you want
Format | C Type | Python Type | Nim Type | Size (bytes) |
x | pad byte | no value | ||
b | char | string of length 1 | char | 1 |
? | _Bool | bool | bool | 1 |
h | short | integer | int16 | 2 |
H | usigned short | integer | uint16 | 2 |
i | int | integer | int32 | 4 |
I | unsigned int | integer | uint32 | 4 |
q | long long | integer | int64 | 8 |
Q | unsigned long long | integer | uint64 | 8 |
f | float | float | float32 | 4 |
d | double | float | float64 | 8 |
s | char[] | string | string |
Notes:
- Format character can has a number prefix, you can use "3?" instead of "???" for pack/unpack three bool value
- For string , number prefix is the length of value
# >>> from struct import *
import struct
# >>> pack('hhi', 1, 2, 3)
var output = pack("hhi", 1, 2, 3)
# alternative way to pack
# output = pack("hhi", newStructInt(1), newStructInt(1), newStructInt(3))
# >>> unpack('hhi', '\x00\x01\x00\x02\x00\x00\x00\x03')
var result = unpack("hhi", output);
echo result[0].getShort
echo result[1].getShort
echo result[2].getInt