public static int formatUInt9Digits()

in gflog-core/src/main/java/com/epam/deltix/gflog/core/util/Formatting.java [1061:1095]


    public static int formatUInt9Digits(@Nonnegative int value,
                                        final @Nonnull MutableBuffer buffer,
                                        final @Nonnegative int offset) {
        // Preconditions:
        // assert value >= 0 && value <= 999999999;
        // assert buffer != null;
        // assert offset >= 0;

        int newValue = (int) (2748779070L * (long) value >>> 38);
        int remainder = value - 100 * newValue;

        short digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (remainder << 1));
        buffer.putShort(offset + 7, digits);

        value = (int) (2748779070L * (long) newValue >>> 38);
        remainder = newValue - 100 * value;

        digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (remainder << 1));
        buffer.putShort(offset + 5, digits);

        newValue = (int) (2748779070L * (long) value >>> 38);
        remainder = value - 100 * newValue;

        digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (remainder << 1));
        buffer.putShort(offset + 3, digits);

        value = (int) (2748779070L * (long) newValue >>> 38);
        remainder = newValue - 100 * value;

        digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (remainder << 1));
        buffer.putShort(offset + 1, digits);
        buffer.putByte(offset, (byte) (value + ZERO));

        return offset + 9;
    }