This software has been designed for you, with much joy, by Michael Shustin
You can find the complete documentation here
Hydration is a library used to define python objects that can be converted to (and from) bytes.
pip install hydration
This guide assumes you are familiar with low-level primitive data types (like signed/unsigned int, int64, etc.)
Fields are primitive objects that hold data, and can be converted to (and from) bytes:
>>> from hydration import *
>>> f = UInt16(1512)
>>> bytes(f)
b'\xe8\x05'
>>> UInt16().from_bytes(b'\xe8\x05')
UInt16(1512)
A struct is a composite of fields.
To create a struct, Inherit from Struct
:
from hydration import *
class MyStruct(Struct):
a = UInt8
b = UInt8(value=3) # You can set the default value
>>> st = MyStruct(a=10) # Structs can receive field values as keyword arguments
>>> print(st)
MyStruct
a: UInt8(10)
b: UInt8(3)
>>> bytes(st)
b'\n\x03'
>>> print(MyStruct.from_bytes(b'\n\x03'))
MyStruct:
a: UInt8(10)
b: UInt8(3)
A message is a list-like composite of structs:
from hydration import *
class Header(Struct):
magic = UInt32(0xDEADBEEF)
class Body(Struct):
param1 = Float(2.875)
param2 = Int8(-128)
>>> msg = Header() / Body() # Create a message by using the division operator on structs
>>> print(msg)
Header:
magic: UInt32(3735928559)
Body:
param1: Float(2.875)
param2: Int8(-128)
>>> bytes(msg)
b'\xef\xbe\xad\xde\x00\x008@\x80'
For more advanced usage, be sure to check the documentation.
Want to report a bug? Request a feature? Please do so here
- Michael Shustin (Author)
- Aviv Atedgi