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