电话号码中为什么不加一位 checksum?经常接到有人输错号码打错的电话,哪怕只加 1bit 校验效果也能降低 50%概率

50 天前
 drymonfidelia
13496 次点击
所在节点    程序员
154 条回复
renfei
50 天前
刚开始没想这么多呗。

已经出售的电话号没有检验位,如果加上校验位,之前的历史号码怎么办?
drymonfidelia
50 天前
@renfei 从新号码开始实施
ouqihang
50 天前
以前的机械电话怎么进行校验,也没有程控交换机。
PeakFish
50 天前
请楼主解释一下 checksum ,我们才能继续指点电话系统设计者
ouqihang
50 天前
7 位升 8 位的时候简单地在最前加一个固定的数字,还有些地方保留 7 位。
w568w
50 天前
1. 电话号码输错没有什么损失,重新拨号就好了。不像身份证、银行卡,输错了真会有财产损失

2. 身份证纠错靠的不仅是纠错位,而是「姓名+纠错位」。仅靠纠错位无法纠正绝大部分输入错误

3. 现在熟人电话基本都用网络电话( VoIP 、微信、QQ 、会议)替代了,电话仅用于生人。一般人打电话的频率很低,没有必要专门实施新系统
terence4444
50 天前
电话号码加校验位会浪费大量号码,而且似乎也没必要,打错电话的代价很小。
rekulas
50 天前
加一位不止 50 吧 估计能降低 80-90
drymonfidelia
50 天前
@terence4444
@rekulas 我的一位指的是二进制 bit 例如把电话号码转二进制,逐位 xor 后放入一个 bit ,浪费不了多少就能降低 50%概率
@PeakFish
rekulas
50 天前
@drymonfidelia 加二进制理论上没问题,但是你的号码怎么让用户输入呢
例如你的号码 12345678 二进制
00110001 00110010 00110011 00110100 00110101 00110110 00110111 00111000

那你的校验位怎么加?
如果是 xor 后替换某一位,那就是减少了号码数量 得不偿失
如果是加一位,那用户如何输入?输入号码后再按一个 0/1 ?那为什么不直接加一个字节 0-9 ,验证还更强点
2333wz
50 天前
@PeakFish 身份证号的最后一位是根据前数字计算出来的
cxh116
50 天前
非通话录的电话一概 AI 接
vvhy
50 天前
> @drymonfidelia 浪费不了多少
应该是浪费了 50%
drymonfidelia
50 天前
@rekulas 把二进制转回十进制啊,相当于用掉 1/8 个数字校验
drymonfidelia
50 天前
@vvhy 浪费了其中八分之一个数字 那么多号码没分配,这算什么
sivacohan
50 天前
1. 避免“接到”误拨电话,这个和降低哈希碰撞的概率问题类似。增加扩大输入空间,使得输入集和结果集都尽可能稀疏,就能解决这个问题。这个问题和“校验码”无关。
2. 校验码,校验码的用途是验证“数据”是否准确。场景是别人告诉你他的电话,你可以通过校验的方式,来立刻确定他在说谎,电话是错误的。
3. OP 主题中说的,如果最后一位是校验码。那么用户输入的时候就可以不输入,因为校验码不属于信息。还是不能避免误拨通
huijiewei
50 天前
你这样搞,炸弹号特殊号怎么弄啊
arielherself
50 天前
@sivacohan 没懂你的意思。OP 的意思是保证所有分配的电话号码二进制形式最后一位都等于前面位的异或,这样可以减小拨出错误号码的几率。什么叫“用户可以不输入”?
joynvda
50 天前
所谓输错号码打错电话的,有多少概率是碰瓷,扫描号段?
对于那些 12345678 ,8888 等号码,如何加校验位?如果运营商能卖选号多赚点钱,干嘛要做无意义的事情?

最后,微信 ID 为何不加一个校验位?
pkoukk
50 天前
经常接到有人输错号码打错的电话
这个体验我还一次都没有过...

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

https://yangjunhui.monster/t/1126194

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

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

© 2021 V2EX