Flickrの短縮URLをJavaで生成

Flickr短縮URLJavaで作ろうとしたけど、妙に詰まったのでメモ。


Flickrには短縮URLが用意されています。
http://flic.kr/p/HogeHge
みたいな感じでアクセスできます。


このHogeHogeの部分は写真のIDをBase58エンコードしたものらしいです。


というわけで、Base64エンコードのコードを参考に作ったりしたけど、
どうにもうまくいかず、、最終的には以下のコードでうまくいきました。

    private static String base58Encode(String id) {
        int num = Integer.parseInt(id);

        String alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
        int base_count = alphabet.length();
        StringBuffer encode = new StringBuffer();
        while (num >= base_count) {
            int div = num / base_count;
            int mod = num % base_count;
            encode.insert(0, alphabet.charAt(mod));
            num = div;
        }

        if (num != 0) {
            encode.insert(0, alphabet.charAt(num));
        }
        return encode.toString();
    }


IDを数字としてそのまま使うのがポイントだったんだろうか・・。
色々試しすぎて、何が悪かったのかよくわかりませんが、とりあえずできました。