MD5 ハッシュの結果を可能な限り短い文字列で表現しようとしています。単純に 16 進文字列にして、G から Z までを無駄にするのはもったいないようです。
私が持っていた 1 つのアイデアは、入力の MD5 ハッシュをバイト配列として取得し、それを使用して を構築するBigInt
ことです。次に、 を呼び出しtoString(36)
て、数値を文字列の base-36 として取得-?[0-9a-z]*
できます ( 、数値は正または負の値になります)。わたしにはできる。
問題は、任意のバイト配列で a を構築できるかどうか確信が持てBigInt
ず、テストでそれを証明できないことです (少なくともタイムリーな方法ではありません!)。BigInt は任意のサイズになる可能性があることを理解しているため、そう思います。この方法は、考えられるすべての出力で機能することが確実にわかるまで使用できません。それで、それがすべての入力に対して機能するかどうか(またはバイト配列を簡単に変換してbase 36で表現できるようにする方法)を教えてください。
明確化: 私は実装を持っています。ドメイン全体の動作について質問しています (つまり、00000000000000000000000000000 から FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)