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

June 22, 2010

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());
}

tilfin freelance software engineer