我试图用最短的字符串表示 MD5 哈希的结果。将它变成一个十六进制字符串并让 G 到 Z 浪费掉似乎是一种浪费。
我的一个想法是将输入的 MD5 散列作为一个字节数组并BigInt
用它构造一个。然后我可以调用toString(36)
,并在字符串中以 base-36 形式获取数字(-?[0-9a-z]*
,数字可以是正数或负数)。这个对我有用。
问题是,我不确定 aBigInt
可以用任何字节数组构造,而且我无法通过测试来证明它(至少不能及时!)。我假设是这样,因为我知道 BigInt 可以是任意大小。在我确定它适用于所有可能的输出之前,我不能使用这种方法。那么,谁能告诉我它是否适用于所有输入(或者如何轻松转换字节数组以便它可以在基数 36 中表示)。
澄清:我有实现,我在询问整个域的行为(即 00000000000000000000000000000000 到 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)