private int decodeNextBWTByte ( ) { int mergedPointer = bwtCurrentMergedPointer ; int nextDecodedByte = mergedPointer & 0xff ; bwtCurrentMergedPointer = bwtMergedPointers [ mergedPointer >>> 8 ] ; if ( blockRandomised ) { if ( -- randomCount == 0 ) { nextDecodedByte ^= 1 ; randomIndex = ( randomIndex + 1 ) % 512 ; randomCount = Bzip2Rand . rNums ( randomIndex ) ; } } bwtBytesDecoded ++ ; return nextDecodedByte ; }
Decodes a byte from the Burrows - Wheeler Transform stage . If the block has randomisation applied reverses the randomisation .