Domain Specific Language(DSL) for parsing and mapping binary data to python objects
Project description
Python package for mapping objects to binary data. It works with Python 2.7+
Installation
Binmapper is available from https://pypi.python.org/pypi/binmapper and can be installed using pip
pip install binmapper
Example usage
import binmapper
import textwrap
definition = u"""\
bintype BinX:
field: uint8
bintype Bin:
fieldX: BinX
"""
definition = textwrap.dedent(definition)
binmap = binmapper.compile(definition)
bin = binmap.Bin()
input = io.BytesIO("\x01")
bin.parse(input)
print(bin.fieldX.field)
Data types
Type |
Byte Size |
Description |
---|---|---|
uint8 |
1 |
Unsigned byte |
uint16 |
2 |
Unsigned short |
uint32 |
4 |
Unsigned short |
sint8 |
1 |
Signed byte |
sint16 |
2 |
Signed short |
sint32 |
4 |
Signed word |
float |
4 |
Floating point with single-precision |
string |
n |
String |
array |
n |
Array |
Common class template
bintype CLASS_NAME:
FIELD_NAME : FIELD_TYPE &FIELD_ATTRIBUTE
...
&CLASS_ATTRIBUTE = CLASS_ATTRIBUTE_VALUE
...
&LET_FIELD_NAME = EXPRESSION
...
Fields
Byteorder
Value |
Description |
---|---|
littlendian |
Increasing numeric significance with increasing memory addresses |
bigendian |
Decreasing numeric significance with increasing memory addresses |
Byteorder can be specified 3-way
Field attribute
field: uint8 &byteorder=littlendian
Apply only to field
BinType attribute
:::python field: uint8 &byteorder=littlendian
Apply to all fields in BinType, except having attribute byteorder
Parse argument
:::python bin.parse(input, byteorder='littlendian')
Apply to all parsed data, except having attribute byteorder or BinType byteorder
Byteorder apply order:
`field byteorder > class byteorder > parse byteorder`
Class Usage
Array Usage
String Usage
Let Field Usage
Change elements in runtime
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file binmapper-0.1a5.zip
.
File metadata
- Download URL: binmapper-0.1a5.zip
- Upload date:
- Size: 50.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d678a906dbc86f9eb98aaa348595172c14ba90d76c50fa1c20fa7aa36047cdd |
|
MD5 | 477012e641acaeb2d55d6bfc37faff69 |
|
BLAKE2b-256 | 99b164ad09798bfa25889d948e343d70c021f74a076cd162cd366aacf5b2bb61 |