base64减少编码十进制数所需的数字

时间:2011-06-03 22:43:00

标签: c++ base64

我必须管理一些对象的ID。 我需要这些ID是独一无二的。 我有这样的限制:这些ID在所需的数字方面不能太长

base64是一种减少编码ID所需数字的好方法吗?

编辑:

langage : c++
data type : integer , then convert in a std::string

3 个答案:

答案 0 :(得分:1)

Base64是一种通过ASCII传输二进制数据的好方法。它通常不会减小任何东西的大小。根据我的经验,它增加了 66% 33%(感谢更正)。

答案 1 :(得分:1)

Base64中的每个字符可以代表6位,因此将ID长度除以6以查看它将包含多少个字符。二进制数据是每字节8位,所以它总是更短,但字节不会全部可读。

Base64将使ID可读,但如果需要手动输入ID(例如密钥),它仍然不会很好。为此,您需要进一步限制字符集。

答案 2 :(得分:1)

如果只关心输出字符串的长度而不是实际的字节大小。然后通过从十进制数字系统(基数10)转换为任何基数高于10的数字系统,输出字符串将更短 看这里的例子 http://www.translatorscafe.com/cafe/units-converter/numbers/calculator/octal-to-decimal/

例如,在他们的情况下 十进制9999999999< - 10个字符长 在基数为32的数值系统中 将是4LDQPDR< -7 chars long

最多可打印95个可打印的ascii字符,您可以使用自己的字符 基数95数值系统,得到更短的字符串

在我的一个项目中使用了这种方法,它足以在短字符串字段中挤出“长”数字ID