読者です 読者をやめる 読者になる 読者になる

Java で整数値を基数 62 の文字列に変換するには

Integer.toString だと基数 36 (0-9a-z) までしか対応していなかったので自前で作った。
自然数を 62進数表記(0-9a-zA-Z)に変換する。

public static String toBase62String(final long value) {
    long val = value;
    
    StringBuilder sb = new StringBuilder(7);
    while (val > 0) {
        int mod = (int)(val % 62);
        if (mod < 10) {
            // 数字
            sb.append(mod);
        } else if (mod < 36) {
            // 英小文字 a = 97
            // mod = mod - 10 + 97
            mod += 87;
            sb.append((char)mod);
        } else {
            // 英大文字 A = 65
            // mod = mod - 36 + 65
            mod += 29;
            sb.append((char)mod);
        }
        val = val / 62;
    }
    
    return new String(sb.reverse());
}