16進数のデータを32進数で圧縮!

16進数(0-9,A-F)を36進数(0-9,A-Z)に圧縮させようと思ったんだけど、36進数だとキリが悪いので32進数(0-9,A-V)にして圧縮してみた。
圧縮してみたと書いたけど、実際どの程度効果あるのかはわかんないw
MD5で受け取る値が16進数になってるんで、もう少し圧縮できないかな?という程度です。


public static void main(String[] args) throws NoSuchAlgorithmException {
String name = "たこ焼きハッちゃん";
byte[] messageArray = MessageDigest.getInstance("MD5").digest(name.getBytes());
byte checkByte = 32;
for (int i=0;i

圧縮前:4bc6ca5464b4a282534d39f8a4a548ed
圧縮後:b6ak4k22jdpo458d

こんな感じ。
ビット反転させて、32でANDかけて、NORで元に戻すと丁度桁あふれしない感じで動きました。
チェック用のビットを反転させてANDすればよかった。A∧~B


System.out.print( Integer.toString((messageArray[i] & 0xff), 16) );
素のMD5はこんな感じで出力。
ただ、上記のソースだと上位2ビット破棄してるんで、ここはちゃんとビットシフトでちょこちょこ見て行かなきゃいけないかなって思います。
Javaかけないから可笑しかったらゴメンナサイ><