static void getBytes(int i, final int index, final byte[] buf) {
        int q, r;
        int pos = index;
        byte sign = 0;

        if (i < 0) {
            sign = '-';
            i = -i;
        }

        // Generate two digits per iteration
        while (i >= 65536) {
            q = i / 100;
            // really: r = i - (q * 100);
            r = i - ((q << 6) + (q << 5) + (q << 2));
            i = q;
            buf[--pos] = DigitOnes[r];
            buf[--pos] = DigitTens[r];
        }

        // Fall thru to fast mode for smaller numbers
        // assert(i <= 65536, i);
        for (;;) {
            q = i * 52429 >>> 16 + 3;
            r = i - ((q << 3) + (q << 1)); // r = i-(q*10) ...
            buf[--pos] = digits[r];
            i = q;
            if (i == 0) {
                break;
            }
        }
        if (sign != 0) {
            buf[--pos] = sign;
        }
    }
Places characters representing the integer i into the character array
buf. The characters are placed into the buffer backwards starting with
the least significant digit at the specified index (exclusive), and
working backwards from there.

Will fail if i == Integer.MIN_VALUE
metamorphosis-commons/src/main/java/com/taobao/metamorphosis/network/ByteUtils.java