Metadata-Version: 1.1
Name: bitstring
Version: 3.1.3
Summary: Simple construction, analysis and modification of binary data.
Home-page: http://python-bitstring.googlecode.com
Author: Scott Griffiths
Author-email: scott@griffiths.name
License: The MIT License: http://www.opensource.org/licenses/mit-license.php
Download-URL: http://python-bitstring.googlecode.com
Description: ================
        bitstring module
        ================
        
        **bitstring** is a pure Python module designed to help make
        the creation and analysis of binary data as simple and natural as possible.
        
        Bitstrings can be constructed from integers (big and little endian), hex,
        octal, binary, strings or files. They can be sliced, joined, reversed,
        inserted into, overwritten, etc. with simple functions or slice notation.
        They can also be read from, searched and replaced, and navigated in,
        similar to a file or stream.
        
        bitstring is open source software, and has been released under the MIT
        licence.
        
        This version supports Python 2.6 and later (including Python 3).
        For Python 2.4 and 2.5 you should instead download version 1.0.
        
        Documentation
        -------------
        The manual for the bitstring module is available here
        <http://packages.python.org/bitstring>. It contains a walk-through of all
        the features and a complete reference section.
        
        It is also available as a PDF as part of the source download.
        
        Installation
        ------------
        If you have downloaded and unzipped the package then you need to run the
        ``setup.py`` script with the 'install' argument::
        
             python setup.py install
        
        You may need to run this with root privileges on Unix-like systems.
        
        
        If you haven't yet downloaded the package then you can just try::
        
             easy_install bitstring
        
        or ::
        
             pip install bitstring     
        
        
        Simple Examples
        ---------------
        Creation::
        
             >>> a = BitArray(bin='00101')
             >>> b = Bits(a_file_object)
             >>> c = BitArray('0xff, 0b101, 0o65, uint:6=22')
             >>> d = pack('intle:16, hex=a, 0b1', 100, a='0x34f')
             >>> e = pack('<16h', *range(16))
        
        Different interpretations, slicing and concatenation::
        
             >>> a = BitArray('0x1af')
             >>> a.hex, a.bin, a.uint
             ('1af', '000110101111', 431)
             >>> a[10:3:-1].bin
             '1110101'
             >>> 3*a + '0b100'
             BitArray('0o0657056705674')
        
        Reading data sequentially::
        
             >>> b = BitStream('0x160120f')
             >>> b.read(12).hex
             '160'
             >>> b.pos = 0
             >>> b.read('uint:12')
             352
             >>> b.readlist('uint:12, bin:3')
             [288, '111']
        
        Searching, inserting and deleting::
        
             >>> c = BitArray('0b00010010010010001111')   # c.hex == '0x1248f'
             >>> c.find('0x48')
             (8,)
             >>> c.replace('0b001', '0xabc')
             >>> c.insert('0b0000')
             >>> del c[12:16]
        
        Unit Tests
        ----------
        
        The 400+ unit tests should all pass for Python 2.6 and later.
        
        ----
        
        The bitstring module has been released as open source under the MIT License.
        Copyright (c) 2014 Scott Griffiths
        
        For more information see the project's homepage on Google Code:
        <http://python-bitstring.googlecode.com>
        
        
Platform: all
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.0
Classifier: Programming Language :: Python :: 3.1
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
