static int encodeVarUInt64()

in java/core/src/main/java/org/bondlib/VarUIntHelper.java [112:182]


    static int encodeVarUInt64(long unsignedValue, OutputStream outputStream) throws IOException {
        int length = 1;

        // byte 0 (needs a special case to test for negative)
        if (unsignedValue >= 0x80 || unsignedValue < 0) {
            outputStream.write((byte) (unsignedValue | 0x80));
            unsignedValue >>>= 7;
            length = 2;

            // byte 1
            if (unsignedValue >= 0x80) {
                outputStream.write((byte) (unsignedValue | 0x80));
                unsignedValue >>>= 7;
                length = 3;

                // byte 2
                if (unsignedValue >= 0x80) {
                    outputStream.write((byte) (unsignedValue | 0x80));
                    unsignedValue >>>= 7;
                    length = 4;

                    // byte 3
                    if (unsignedValue >= 0x80) {
                        outputStream.write((byte) (unsignedValue | 0x80));
                        unsignedValue >>>= 7;
                        length = 5;

                        // byte 4
                        if (unsignedValue >= 0x80) {
                            outputStream.write((byte) (unsignedValue | 0x80));
                            unsignedValue >>>= 7;
                            length = 6;

                            // byte 5
                            if (unsignedValue >= 0x80) {
                                outputStream.write((byte) (unsignedValue | 0x80));
                                unsignedValue >>>= 7;
                                length = 7;

                                // byte 6
                                if (unsignedValue >= 0x80) {
                                    outputStream.write((byte) (unsignedValue | 0x80));
                                    unsignedValue >>>= 7;
                                    length = 8;

                                    // byte 7
                                    if (unsignedValue >= 0x80) {
                                        outputStream.write((byte) (unsignedValue | 0x80));
                                        unsignedValue >>>= 7;
                                        length = 9;

                                        // byte 8
                                        if (unsignedValue >= 0x80) {
                                            outputStream.write((byte) (unsignedValue | 0x80));
                                            unsignedValue >>>= 7;
                                            length = 10;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        // last byte
        outputStream.write((byte) unsignedValue);

        return length;
    }