struct

Python-like 'struct' for Nim

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install struct
choosenim install struct
git clone https://github.com/OpenSystemsLab/struct.nim

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
struct - - - - - - -

Source

Repository https://github.com/OpenSystemsLab/struct.nim
Homepage https://github.com/OpenSystemsLab/struct.nim
Registry Source nimble_official

README

struct.nim

Python-like 'struct' for Nim

This library is still under development, use it as yourown risk!

Format String

Byte Order

CharacterByte 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 Characters:

integerintegerintegerinteger
FormatC TypePython TypeNim TypeSize (bytes)
xpad byteno value
bcharstring of length 1char1
?_Boolboolbool1
hshortintegerint162
Husigned shortintegeruint162
iintintegerint324
Iunsigned intintegeruint324
qlong longintegerint648
Qunsigned long longintegeruint648
ffloatfloatfloat324
ddoublefloatfloat648
schar[]stringstring

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

Usage

# >>> 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