手机号怎么压缩最有效率?

2020-11-20 16:17:05 +08:00
 exciting

要存在 redis 中,谢谢各位大佬~

2047 次点击
所在节点    问与答
14 条回复
jim9606
2020-11-20 16:21:27 +08:00
存成一个 64 位整数。
极限可以用 34 位整数,不过我觉得没必要。
zooo
2020-11-20 16:31:04 +08:00
哈夫曼编码?
wysnylc
2020-11-20 16:32:46 +08:00
数字压缩???????
imn1
2020-11-20 16:41:50 +08:00
头三位没几个,5bit 都够用了,后面的也是按 bit,但这样压实用麻烦啊,业务逻辑弱
Maboroshii
2020-11-20 16:44:00 +08:00
没必要吧,可以根据需求预估一下占用内存大小
xiangyuecn
2020-11-20 16:51:06 +08:00
19999999999 -> 96rherj

36 进制,只需 7 字节 比 long 省 1 个字节😂
codyfeng
2020-11-20 17:07:46 +08:00
存一个 int64 不能支持其他国家的号码。
66450146
2020-11-20 17:49:24 +08:00
不要考虑空间效率了,安心存字符串吧,存成整数容易遇到业务上的问题……
exciting
2020-11-20 18:11:36 +08:00
最后选用 64 位了
CEBBCAT
2020-11-20 18:17:07 +08:00
@zooo #2 哈夫曼是一种取编码的方式,如给 A B C 三个字母取二进制代号,和这个问题没有关系哦
zooo
2020-11-20 18:23:23 +08:00
@CEBBCAT 噢噢 这样呀
shenqi
2020-11-20 18:25:59 +08:00
0-9a-zA-Z, 这里面已经能达到 52 个字符,简单点弄个 52 进制,

难的,把所有的单字符都用上,例如标点符号各种,一个字符进制加 1,如果你又 19999999999 个字符,那这个你就能到长度 1 了。
(这个映射长度也 19999999999,有点。。。)
CEBBCAT
2020-11-20 18:31:42 +08:00
几亿用户啊这是
sujin190
2020-11-20 18:33:50 +08:00
8 字节可以满保存 19 个数字了吧,就算给国家三位代码也戳戳有余了吧,有哪个国家的电话号码有 16 位那么长的么?这么长似乎也记不住的吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727592

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX