                              Blosc Header Format

   Blosc (as of Version 1.0.0) has the following 16 byte header that stores
   information about the compressed buffer:

 |-0-|-1-|-2-|-3-|-4-|-5-|-6-|-7-|-8-|-9-|-A-|-B-|-C-|-D-|-E-|-F-|
   ^   ^   ^   ^ |     nbytes    |   blocksize   |    ctbytes    |
   |   |   |   |
   |   |   |   +--typesize
   |   |   +------flags
   |   +----------versionlz
   +--------------version

                        Datatypes of the Header Entries

   All entries are little endian.

    version:    (uint8) Blosc format version.                                 
    versionlz:  (uint8) Version of the internal compressor used.              
    flags and compressor enumeration:
                (bitfield) The flags of the buffer                            
                                                                              
                 bit 0 (0x01):  Whether the byte-shuffle filter has been      
                                applied or not.                               
                 bit 1 (0x02):  Whether the internal buffer is a pure         
                                memcpy or not.                                
                 bit 2 (0x04):  Whether the bit-shuffle filter has been       
                                applied or not.                               
                 bit 3 (0x08):  Reserved, must be zero.                       
                 bit 4 (0x10):  If set, the blocks will not be split in       
                                sub-blocks during compression.                
                 bit 5 (0x20):  Part of the enumeration for compressors.      
                 bit 6 (0x40):  Part of the enumeration for compressors.      
                 bit 7 (0x80):  Part of the enumeration for compressors.      
                                                                              
                The last three bits form an enumeration that allows to use    
                alternative compressors.                                      
                                                                              
                 0:  blosclz                                                  
                 1:  lz4 or lz4hc                                             
                 2:  snappy                                                   
                 3:  zlib                                                     
                 4:  zstd                                                     
    typesize:   (uint8) Number of bytes for the atomic type.                  
    nbytes:     (uint32) Uncompressed size of the buffer.                     
    blocksize:  (uint32) Size of internal blocks.                             
    ctbytes:    (uint32) Compressed size of the buffer.                       
