Skip to main content

a c-extension that implements a binary reader on top of bytes and bytearrays

Project description

binaryreader

binaryreader is a faster and more elegant alternative to struct for parsing binary data in Python.

Example

from binaryreader import BinaryReader

data: bytes|bytearray
read_little_endian: bool = True
reader = BinaryReader(data, read_little_endian)

text = reader.readStringC()

Benchmark

TODO

Documentation

Notes:

  • kwargs won't be accepted, only args are useable
  • all readArray functions accept a langth as optional argument
  • bytes can be read by using readUInt8Array

Init

  • BinaryReader(data: bytes|bytearray, is_little_endian: bool)

Properties

  • .endian: bool[get,set] - endianness of the reader (True - little, False - big)
  • .position: int[get,set] - position of the cursor within the data
  • .size: int[get] - size of underlying/passed object
  • .obj: bytes|bytearray[get] - underlying/passed object

Functions

  • .readBool(): bool - reads a bool
  • .readInt8(): int - reads an int8
  • .readUInt8(): int - reads an uint8
  • .readInt16(): int - reads an int16
  • .readUInt16(): int - reads an uint16
  • .readInt32(): int - reads an int32
  • .readUInt32(): int - reads an uint32
  • .readInt64(): int - reads an int64
  • .readUInt64(): int - reads an uint64
  • .readHalf(): float - reads a half
  • .readFloat(): float - reads a float
  • .readDouble(): float - reads a double
  • .readBoolArray(): [bool] - reads a bool array
  • .readInt8Array(): [int] - reads a array of int8
  • .readUInt8Array(): bytearray - reads a array of uint8
  • .readInt16Array(): [int] - reads a array of int16
  • .readUInt16Array(): [int] - reads a array of uint16
  • .readInt32Array(): [int] - reads a array of int32
  • .readUInt32Array(): [int] - reads a array of uint32
  • .readInt64Array(): [int] - reads a array of int64
  • .readUInt64Array(): [int] - reads a array of uint64
  • .readHalfArray(): [float] - reads a array of half
  • .readFloatArray(): [float] - reads a array of float
  • .readDoubleArray(): [float] - reads a array of double
  • .readStringC(): str - reads a null terminated string
  • .readStringCArray(): [str] - reads an array of null terminated strings
  • .readString(): str - reads a string (if length is not passed as arg, read an int as length)
  • .readStringArray(): [str] - reads an array of strings
  • .readStringAligned(): str - same as readString but aligned to 4 bytes after reading the string
  • .readStringAlignedArray(): [str] - reads an array of aligned strings
  • .align(align_by: int): int - aligns the cursor to the given input and returns the position after the alignment
  • .readVarInt(): int - reads a varint
  • .readLSB(): bytearray - reads the lsb data of the given size (in bytes to read -> output length is 1/8 of that)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

binaryreader-0.1.4.tar.gz (8.3 kB view hashes)

Uploaded Source

Built Distributions

binaryreader-0.1.4-py3.10-win-amd64.egg (13.2 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.10-win32.egg (12.1 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.9-win-amd64.egg (13.2 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.9-win32.egg (12.1 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.8-win-amd64.egg (13.2 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.8-win32.egg (12.1 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.7-win-amd64.egg (13.2 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.7-win32.egg (12.0 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.6-win-amd64.egg (13.2 kB view hashes)

Uploaded Source

binaryreader-0.1.4-py3.6-win32.egg (12.0 kB view hashes)

Uploaded Source

binaryreader-0.1.4-cp310-cp310-win_amd64.whl (13.3 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

binaryreader-0.1.4-cp310-cp310-win32.whl (12.1 kB view hashes)

Uploaded CPython 3.10 Windows x86

binaryreader-0.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (43.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

binaryreader-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

binaryreader-0.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (41.8 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

binaryreader-0.1.4-cp310-cp310-macosx_11_0_x86_64.whl (11.4 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ x86-64

binaryreader-0.1.4-cp310-cp310-macosx_10_14_x86_64.whl (11.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.14+ x86-64

binaryreader-0.1.4-cp39-cp39-win_amd64.whl (13.3 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

binaryreader-0.1.4-cp39-cp39-win32.whl (12.1 kB view hashes)

Uploaded CPython 3.9 Windows x86

binaryreader-0.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (42.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

binaryreader-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

binaryreader-0.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (41.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

binaryreader-0.1.4-cp39-cp39-macosx_11_0_x86_64.whl (11.4 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ x86-64

binaryreader-0.1.4-cp39-cp39-macosx_10_14_x86_64.whl (11.3 kB view hashes)

Uploaded CPython 3.9 macOS 10.14+ x86-64

binaryreader-0.1.4-cp38-cp38-win_amd64.whl (13.2 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

binaryreader-0.1.4-cp38-cp38-win32.whl (12.1 kB view hashes)

Uploaded CPython 3.8 Windows x86

binaryreader-0.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (43.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

binaryreader-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (45.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

binaryreader-0.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (42.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

binaryreader-0.1.4-cp38-cp38-macosx_10_15_x86_64.whl (11.4 kB view hashes)

Uploaded CPython 3.8 macOS 10.15+ x86-64

binaryreader-0.1.4-cp38-cp38-macosx_10_14_x86_64.whl (11.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.14+ x86-64

binaryreader-0.1.4-cp37-cp37m-win_amd64.whl (13.2 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

binaryreader-0.1.4-cp37-cp37m-win32.whl (12.1 kB view hashes)

Uploaded CPython 3.7m Windows x86

binaryreader-0.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (42.9 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

binaryreader-0.1.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.5 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

binaryreader-0.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (41.7 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

binaryreader-0.1.4-cp37-cp37m-macosx_10_15_x86_64.whl (11.4 kB view hashes)

Uploaded CPython 3.7m macOS 10.15+ x86-64

binaryreader-0.1.4-cp37-cp37m-macosx_10_14_x86_64.whl (11.2 kB view hashes)

Uploaded CPython 3.7m macOS 10.14+ x86-64

binaryreader-0.1.4-cp36-cp36m-win_amd64.whl (13.2 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

binaryreader-0.1.4-cp36-cp36m-win32.whl (12.1 kB view hashes)

Uploaded CPython 3.6m Windows x86

binaryreader-0.1.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (42.9 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

binaryreader-0.1.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.5 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

binaryreader-0.1.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (41.7 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page