Metadata-Version: 2.1
Name: binary_reader
Version: 1.4.3
Summary: A python module for basic binary file IO.
Home-page: https://github.com/SutandoTsukai181/PyBinaryReader
Author: SutandoTsukai181
Author-email: mosamaeldeeb@gmail.com
License: MIT
Download-URL: https://github.com/SutandoTsukai181/PyBinaryReader/archive/refs/tags/v1.4.3.tar.gz
Description: # PyBinaryReader
        A python module for basic binary file IO.
        
        This is something I wrote to use in my personal projects, but feel free to use it if you like!
        
        # Installation
        `pip install binary-reader`
        
        # Usage
        ```py
        from binary_reader import BinaryReader
        ```
        
        Here is some example usage on creating and using a BinaryReader to read a small part of the DDS header:
        
        ```py
        f = open("example.dds", "rb")  # Open a file in binary mode
        
        reader = BinaryReader(f.read())  # Create a new BinaryReader from the file buffer (we can close the file afterwards)
        
        # Read the magic as a UTF-8 encoded string and compare it to the correct magic
        if reader.read_str(4) != 'DDS ':
            raise Exception('Incorrect magic.')
        
        size = reader.read_uint32()  # Read the next 4 bytes as an unsigned 32-bit integer
        ```
        
        Another example on using BinaryReader features to navigate through a buffer:
        
        ```py
        some_offset = reader.read_uint32()  # Read an offset that we want to move to
        
        prev_pos = reader.pos()  # Store the current position so we can return back later
        reader.seek(some_offset)  # Set the current position in the file to that offset
        
        vector = reader.read_float(3)  # Read 3 consecutive 32-bit floats, return them as a tuple
        
        reader.seek(prev_pos)  # Go back to the previous position
        
        reader.seek(4, whence=1)  # In addition to absolute seeking, we can also seek relative to the current position...
        
        reader.seek(0, whence=2)  # And relative to the end of the buffer. This will set the position to be the last index in the buffer
        
        ```
        
        In addition to reading, you can also write to a new buffer:
        ```py
        writer = BinaryReader()  # Create a new BinaryReader (bytearray buffer is initialized automatically)
        
        writer.set_endian(is_big_endian=True)  # Set the endianness to big endian
        
        writer.write_str('MGIC')
        writer.write_uint32(20)
        
        writer.align(0x10)  # Align the buffer to 0x10 (in this case, will append 8 bytes to the buffer)
        
        writer.pad(0xF0)  # Add 0xF0 bytes of padding
        print(writer.size())  # This should print 256 (0x100)
        
        # Write the buffer to a new file
        with open('examplefile', 'wb') as f:
            f.write(writer.buffer())
        ```
        
        These are the types that can be used with BinaryReader. Just add `read_` or `write_` before the type to get the method name:
        ```
        uint8, int8,
        uint16, int16, half_float
        uint32, int32, float
        uint64, int64,
        bytes, str
        ```
        
        # License
        This project uses the MIT License, so feel free to include it in whatever you want.
        
Keywords: BINARY,IO,STRUCT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
