in gflog-core/src/main/java/com/epam/deltix/gflog/core/util/Formatting.java [1249:1283]
public static int formatULong10Digits(@Nonnegative long value, final @Nonnull byte[] array, @Nonnegative int offset) {
// Preconditions:
// assert value >= 0 && value <= 9999999999;
// assert array != null;
// assert offset >= 0;
final long left = value / 100_000_000;
short digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (left << 1));
UNSAFE.putShort(array, ARRAY_BYTE_BASE_OFFSET + offset, digits);
long right = value - 100_000_000 * left;
long rightNew = 2748779070L * right >>> 38;
long rightRemainder = right - 100 * rightNew;
digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (rightRemainder << 1));
UNSAFE.putShort(array, ARRAY_BYTE_BASE_OFFSET + offset + 8, digits);
right = 2748779070L * rightNew >>> 38;
rightRemainder = rightNew - 100 * right;
digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (rightRemainder << 1));
UNSAFE.putShort(array, ARRAY_BYTE_BASE_OFFSET + offset + 6, digits);
rightNew = (int) (2748779070L * right >>> 38);
rightRemainder = right - 100 * rightNew;
digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (rightRemainder << 1));
UNSAFE.putShort(array, ARRAY_BYTE_BASE_OFFSET + offset + 4, digits);
digits = UNSAFE.getShort(ADDRESS_OF_DIGITS_TABLE + (rightNew << 1));
UNSAFE.putShort(array, ARRAY_BYTE_BASE_OFFSET + offset + 2, digits);
return offset + 10;
}