public static byte[] getBytes(final BigInteger value) {
    final byte[] result = new byte[8];
    final long val = value.longValue();
    result[0] = (byte)((val & BYTE_MASK));
    result[BYTE_1] = (byte)((val & BYTE_1_MASK) >> BYTE_1_SHIFT);
    result[BYTE_2] = (byte)((val & BYTE_2_MASK) >> BYTE_2_SHIFT);
    result[BYTE_3] = (byte)((val & BYTE_3_MASK) >> BYTE_3_SHIFT);
    result[BYTE_4] = (byte)((val & BYTE_4_MASK) >> BYTE_4_SHIFT);
    result[BYTE_5] = (byte)((val & BYTE_5_MASK) >> BYTE_5_SHIFT);
    result[BYTE_6] = (byte)((val & BYTE_6_MASK) >> BYTE_6_SHIFT);
    result[BYTE_7] = (byte)((val & BYTE_7_MASK) >> BYTE_7_SHIFT);
    if (value.testBit(LEFTMOST_BIT_SHIFT)) {
      result[BYTE_7] |= LEFTMOST_BIT;
    }
    return result;
  }
public static byte[] getBytes(final BigInteger value)