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

2025 年 4 月 17 日
 drymonfidelia
18579 次点击
所在节点    程序员
154 条回复
restkhz
2025 年 4 月 17 日
或许你可以参考 Luhn 算法,身份证校验算法之类的,搞个 mod12 。
还有如果你能加一位号码(考虑到还有星号井号),能多携带\log_2 12 大概 3.6bits 的信息。所以你能做的远超过只是加一个奇偶校验 bit 。从信息论角度,理想情况下最好可以做到 100%-2^(3.6)%,就是多一 bit 能校验一半信息,大概 91.7%的查错率。

这大概是一个历史路径依赖的问题,一开始是和接线员说你找哪里的谁谁谁就好,后来开始用了自动交换机后才开始用号码。
我在博物馆看过那个巨大的貌似叫步进电话交换机的玩意儿,那个时代没有芯片。你拨一个数字,后面那个巨大的机器里面就咔嚓咔嚓地转。
仅仅只是打个电话自动接线就已经非常不容易了...要是让它搞个内存,存你拨的号然后再跑校验算法就太难为他了。
后来电话交换机也数字化了,能玩校验算法了。但是电话号码早就开始全球化了...这个时候就不好升级了。

或许我们对芯片的存在习以为常了
drymonfidelia
2025 年 4 月 17 日
@huijiewei 电话号码又不是什么比特币钱包需要离线可用,校验算法可以在运营商那边跑,特殊号特殊处理即可
drymonfidelia
2025 年 4 月 17 日
另外校验位也不一定要在最后一位,可以在中间
moefishtang
2025 年 4 月 17 日
现在有接通后先转接到运营商的验证服务,输入指定密码后才能接通到对方手机上
用来防骚扰的,某种意义上也满足了 OP 对于电话号码加校验位的需求?
neptuno
2025 年 4 月 17 日
感觉就是增加一位,但是又从中废弃了很大一部分号码,就是为了防止用户打错电话,是这个意思吗?
bruce0
2025 年 4 月 17 日
@ouqihang #5 这个我真有印象,小时候用固话打电话,好像前面要加个 0 才能只能拨打
Donaldo
2025 年 4 月 17 日
@drymonfidelia #2 你咋知道哪个是新的哪个是旧的,那还校验不校验。。
pirredelu
2025 年 4 月 17 日
加一位也会增加用户输错的概率
1018ji
2025 年 4 月 17 日
V1 版本我们可以设计 1 位校验位,v2 版本为了校验这个校验位正不正常,我们再加 1 位,以此类推大事可成
Xopher
2025 年 4 月 17 日
难道打电话都是手输号码多?怕你加 100 位验证码都没用
manhere
2025 年 4 月 17 日
想一下为啥叫电话号码,不叫电话编码?
codermz
2025 年 4 月 17 日
因为打错了运营商一样赚钱
rekulas
2025 年 4 月 17 日
@drymonfidelia 感觉你可能不懂二进制 一个独立 bit 你怎么转 10 进制...
ganbuliao
2025 年 4 月 17 日
虽然我比较菜 但是有没有可能是为了我这种菜鸟友好啊 比如我是运营商老板 要新增 1000 个号码 那我就很简单的知道新增了哪些号码 统计的时候也好统计 业务员也好统计也好分配统计啊 这就是 10 进制的优势
yanqiyu
2025 年 4 月 17 日
换个角度,这里加奇偶校验也就约等于编号码的时候跳着编

这么一听不就是很诡异了
shine1996
2025 年 4 月 17 日
没懂你的意思, 用户输入电话号码时多输入一个 0/1 吗?
那不还是会输错啊?
yolee599
2025 年 4 月 17 日
那运营商还怎么卖尾号为 888 ,666 的靓号?
peakmuma
2025 年 4 月 17 日
@drymonfidelia 应该 少了 1/2 吧
keifafa
2025 年 4 月 17 日
没必要啊,十几位的电话号记不住,加了一位,更记不住了
yuhaofe
2025 年 4 月 17 日
那号码总数不也少了一半 😂

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

https://v2ex.ih06.com/t/1126194

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

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

© 2021 V2EX