首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从基数10到36转换crc32值所生成的最大字符数是多少

从基数10到36转换crc32值所生成的最大字符数是多少
EN

Stack Overflow用户
提问于 2010-02-26 00:49:15
回答 2查看 2K关注 0票数 1

以下语句生成的最大字符数是多少?我需要正确地格式化输出。

代码语言:javascript
复制
echo base_convert(sprintf('%u',crc32($_string)),10,36);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-26 01:15:40

代码语言:javascript
复制
crc32($_string)

以32位整数形式返回CRC,其最大值为0xFFFFFFFFF,十进制为4294967295。

代码语言:javascript
复制
sprintf('%u',crc32($_string))

将返回上面的值,解释为unsigned int。

代码语言:javascript
复制
base_convert(sprintf('%u',crc32($_string)),10,36)

这将把先前返回的int从基数10转换为基数36。现在是4294967295 in base 10 = 1z141z3 in base 36,它有7个字符的长度。所以看起来最大长度是7个字符。

票数 4
EN

Stack Overflow用户

发布于 2010-02-26 01:38:06

我看到您已经有了答案,但我想推广一下解决方案。

问题是需要多少个基数36位才能表示具有32个基数2位(即位)的数。与中间的基数10之间的转换与问题无关。

位数由所需基数中的数字的对数决定。我们知道以2为底的对数是32,那么以36为底的对数是多少?

代码语言:javascript
复制
32 * log(2) / log(36)

我的计算器给我的是6.1896449左右。因为我们不能处理部分数字,所以你需要四舍五入到7。这也解释了为什么6位数字在大多数情况下是有效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2335822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档