【发布时间】:2010-10-24 05:10:57
【问题描述】:
我正在尝试将 md5 字符串(base 16)转换为 c++ 中的 base 62 字符串。到目前为止,我发现的每个转换为 base 62 的解决方案只有在您可以将您的数字表示为 64 位整数或更小的整数时才有效。一个 md5 字符串是 128 位的,我自己一个都没有。
我应该只包含一个 bigint 库并完成它吗?
【问题讨论】:
-
我可能是错的,但由于您没有使用 2 基数的幂,您将需要进行除法。这意味着您需要能够将 md5 表示为“数字”,而不仅仅是一串十六进制字符。 bitint 可能是唯一实用的选择。
-
只需添加两个字符即可。 Base64 无处不在。
-
@Evan Teran - 当我问我的问题时,我意识到了这个问题。我同意我的问题非常相似。我再次问它的唯一原因是因为没有人给出令人满意的答案。另外,我实际上在钓鱼;我希望能够以 N 为基数表示任何大小的字节数组。如果我只想缩短一个 url,那么我会接受下面的 sellibitze 解决方案。我想我们俩可能都是对的;唯一的方法是使用 bigint 类,或者至少实现 bigint 所需的部分 - DIV 和 MOD。