Java BigInteger Calculate encodeCompactBits(BigInteger value)

Here you can find the source of encodeCompactBits(BigInteger value)

Description

encode Compact Bits

License

Apache License

Declaration

public static long encodeCompactBits(BigInteger value) 

Method Source Code

//package com.java2s;
/*//ww  w.j av  a2 s  . c  o  m
 * Copyright 2011 Google Inc.
 * Copyright 2014 Andreas Schildbach
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.math.BigInteger;

public class Main {
    /**
     * @see Utils#decodeCompactBits(long)
     */
    public static long encodeCompactBits(BigInteger value) {
        long result;
        int size = value.toByteArray().length;
        if (size <= 3)
            result = value.longValue() << 8 * (3 - size);
        else
            result = value.shiftRight(8 * (size - 3)).longValue();
        // The 0x00800000 bit denotes the sign.
        // Thus, if it is already set, divide the mantissa by 256 and increase the exponent.
        if ((result & 0x00800000L) != 0) {
            result >>= 8;
            size++;
        }
        result |= size << 24;
        result |= value.signum() == -1 ? 0x00800000 : 0;
        return result;
    }
}

Related

  1. emit(BigInteger integer)
  2. encode(BigInteger number, String alphabets)
  3. encode_long(BigInteger big)
  4. encodeBigInt(OutputStream out, BigInteger x)
  5. encodeBigIntNoTypeCode(BigInteger value)
  6. encodeFloat(BigInteger j, int e)
  7. encodeInteger(BigInteger i, OutputStream os)
  8. encodeMPI(BigInteger value, boolean includeLength)
  9. encodeToBase62(BigInteger num)