public static BigInteger getValue(final byte[] bytes, final int offset) {
    long value = ((long)bytes[offset + BYTE_7] << BYTE_7_SHIFT) & BYTE_7_MASK;
    value += ((long)bytes[offset + BYTE_6] << BYTE_6_SHIFT) & BYTE_6_MASK;
    value += ((long)bytes[offset + BYTE_5] << BYTE_5_SHIFT) & BYTE_5_MASK;
    value += ((long)bytes[offset + BYTE_4] << BYTE_4_SHIFT) & BYTE_4_MASK;
    value += ((long)bytes[offset + BYTE_3] << BYTE_3_SHIFT) & BYTE_3_MASK;
    value += ((long)bytes[offset + BYTE_2] << BYTE_2_SHIFT) & BYTE_2_MASK;
    value += ((long)bytes[offset + BYTE_1] << BYTE_1_SHIFT) & BYTE_1_MASK;
    value += ((long)bytes[offset] & BYTE_MASK);
    final BigInteger val = BigInteger.valueOf(value);
    return (bytes[offset + BYTE_7] & LEFTMOST_BIT) == LEFTMOST_BIT
           ? val.setBit(LEFTMOST_BIT_SHIFT) : val;
  }
public static BigInteger getValue(final byte[] bytes, final int offset)