public static byte[] encodeLength(int length)
    {
        if (length < 128) {
            return new byte[] {(byte) length};
        }
        int numberOfBits = 32 - Integer.numberOfLeadingZeros(length);
        int numberOfBytes = (numberOfBits + 7) / 8;
        byte[] encoded = new byte[1 + numberOfBytes];
        encoded[0] = (byte) (numberOfBytes | 0x80);
        for (int i = 0; i < numberOfBytes; i++) {
            int byteToEncode = (numberOfBytes - i);
            int shiftSize = (byteToEncode - 1) * 8;
            encoded[i + 1] = (byte) (length >>> shiftSize);
        }
        return encoded;
    }
public static byte[] encodeLength(int length)
    {
        if (length < 128) {
            return new byte[] {(byte) length};
        }
        int numberOfBits = 32 - Integer.numberOfLeadingZeros(length);
        int numberOfBytes = (numberOfBits + 7) / 8;
        byte[] encoded = new byte[1 + numberOfBytes];
        encoded[0] = (byte) (numberOfBytes | 0x80);
        for (int i = 0; i < numberOfBytes; i++) {
            int byteToEncode = (numberOfBytes - i);
            int shiftSize = (byteToEncode - 1) * 8;
            encoded[i + 1] = (byte) (length >>> shiftSize);
        }
        return encoded;
    }
public static byte [ ] encodeLength ( int length ) { if ( length < 128 ) { return new byte [ ] { ( byte ) length } ; } int numberOfBits = 32 - Integer . numberOfLeadingZeros ( length ) ; int numberOfBytes = ( numberOfBits + 7 ) / 8 ; byte [ ] encoded = new byte [ 1 + numberOfBytes ] ; encoded [ 0 ] = ( byte ) ( numberOfBytes | 0x80 ) ; for ( int i = 0 ; i < numberOfBytes ; i ++ ) { int byteToEncode = ( numberOfBytes - i ) ; int shiftSize = ( byteToEncode - 1 ) * 8 ; encoded [ i + 1 ] = ( byte ) ( length >>> shiftSize ) ; } return encoded ; }
Encodes the length of a DER value.  The encoding of a 7bit value is simply the value.  Values needing more than 7bits
are encoded as a lead byte with the high bit set and containing the number of value bytes.  Then the following bytes
encode the length using the least number of bytes possible.
Encodes the length of a DER value . The encoding of a 7bit value is simply the value . Values needing more than 7bits are encoded as a lead byte with the high bit set and containing the number of value bytes . Then the following bytes encode the length using the least number of bytes possible .