滴,扫码成功

2021-08-26 04:40antares
科学Fans 2021年4期
关键词:编码方式电码细线

antares

1948年的一天,美国费城的一家超市店主找到卓克索理工学院(后更名为卓克索大学)的院长,请求开发一种有效的产品数据编码方法。他希望,运用这种编码方法,顾客每次在购买商品时,收银员就不用手动去输入每件商品的名称,只需要用收银机对准商品,就能自动识别出来。这不仅能减少出错率,还能提高收银效率。但如何才能办到呢?

摩尔斯电码

机器的“视觉”和人类的视觉并不一样。对人类来说,只要上过学就能辨认文字。而想让机器来辨认文字却相当困难——特别是当文字的字体、大小、颜色等都不规则的情况下。相反,机器擅长识别的是规则排布的色块。如伺将文字转化成色块呢?

所幸,当时就有一个现成的参考对象:摩尔斯电码。这是电报机使用的一种编码方式。电报机是一种早期的无线通信机,发报机只有一个键。如果发报方按下那个键,收报方就会听到一声“嘀”,如果按得长一点,就会听到长一点的“嘀——”。因此,想要用这种机器传递消息,就必须想办法用单调的“嘀”表示文字。实际的做法就是把每个字母和数字按照固定的规则转换成长音和短音的组合。

国际摩尔斯电码

1.一点的长度是一个单位

2.一划是三个单位

3.在一个字母中点划之间的间隔是一点

4.两个字母之间的间隔是三点(一划)

5.两个单词之间的间隔是七点

雖然电报已经退出了历史舞台,但是,这种“用两种符号构成的符号串编码字母/数字”的做法可是要划个重点的。现在你用到的电脑、手机等电子设备能处理文字,其背后都用到了“编码”的思路。而我们接下来要说明的条形码和二维码,自然也不例外。

条形码

沿着这条思路开发出来的就是条形码,其设计思路是用黑色细线代表1,白色细线代表0,然后用这两种符号进行编码。条形码最大的用途就是表示商品编号,除此之外,一些国家的邮政也会用条形码表示地址和邮编。

如果你去超市里拿起一件商品,就可以试着找找上面黑白色的条带。每件商品都有一个编号,由代表国家、生产商、货品、校验码的一系列数字构成。每个数字又转化成7根黑色或白色的细线排布在一起。当收银员用扫码器扫描条形码的时候,就可以通过条形码的黑白排布反算回0和1的组合,然后再转化回商品编号,由此知道你买了哪件商品。

通用产品代码示意图,这是一种在美国便用的12位商品条形码。每个数字会被编码为7根黑色或白色的细线,绿色部分则是用于定位的固定黑线。目前国际上更常用的是一种叫国际商品编码的13位编码,它的编码方式要更复杂一些。(来源:Wikipedia)

条形码的编码方式和摩尔斯电码不同,主要是因为它使用时需要顾虑到的因素不同。发电报的时间越短越好,所以设计时采用了变长码,常用的字母如E和T只用一个符号,而不常用的(比如Z)就很长。但是,这种设计无法识别发报时发生的错误。倘若把一个长音听成了短音,或是听漏了两个字母之间的空白,那解读出的字母就会出错。不过,由于电报本质上发送的还是一句话或是一封信,因此通过上下文多少能修正字母的错误。条形码呢,因为已经把商品转换成了数字编码,所以任何一个数字出错都可能会导致识别成完全不同的商品。在国际商品编码中,7位的黑白细线总共有128种可能性,但只使用了其中30种用来表示0-9的数字(每个数字会根据在第几位选择3种不同的编码方式之一来使用),就是为了应对可能产生的错误。

另外值得一提的是左中右的几根稍长一点的黑白细线。这几根线是用来定位的,可以让扫描器确定条形码的位置,以及细线的粗细。这样,条形码在印刷的时候就有了一定的自由度,可大可小,扫描的时候偏一些也不要紧。

目前最常用的二维码QR码的结构(来源:Wikipedia)

二维码

有了条形码以后,头脑灵活的人们就自然会想,能否用这种技术来表示更长或是更复杂的内容。仔细想想,“用长条表示一个符号”的效率其实相当低。既然扫码器的扫描精度高于线的粗细,那为什么不能把细线弄得更短,变成小块呢?根据围棋的黑白棋子分布,日本工程师原昌宏找到了灵感,发明了这种把黑色或白色小块排布在二维平面上构成的二维码。

和条形码一样,二维码也有许多不同的样式。设计原理大同小异,都是用黑白色块表示0和1,用来编码文字。二维码编码方法的细节比条形码要复杂很多,想完全解释清楚有点超出本文的篇幅。以现在最流行的QR码为例,它在左上、右上和左下分别有三个大的回字形定位标志,剩下的部分中会有一些小的回字形校正标志,以及编码版本和格式信息。剩余的部分则是编码。QR码的编码标准提供了从21×21到177×177大小的选择,最小的可以编码25个字母或10个汉字,最大的可以编码4296个字母或1817个汉字——足以储存完一整篇小作文了。

二维码的一个有趣的设计在于,它对文字的编码里除了包含需要编码的文本,还包含了一些“校验码”。校验码的设计用到了大学数学系才会学到的代数知识,让二维码可以具备一定的纠错功能。即使部分编码变脏或破损,也可以解码出原本的文本。QR码的设计中允许选择四种校验等级之一,等级越高,校验码越长(也就是说同样面积的二维码能编码更少的文本),但是纠错能力越强。最高的一级可以在30%的二维码破损的情况下仍然能还原原先的文本。当然,现在大家的二维码大多都显示在手机或电脑上,几乎不会有什么变脏或破损的情况。所以,很多人会反其道而行之,利用这一特性在二维码上做一些艺术加工。只要艺术加工的面积不太大,二维码仍然可以正确识别。

经过艺术加工的二维码

二维码的应用

二维码本身只是一种通用的文本编码方式,它的具体应用取决于里面蕴藏的文本。例如,火车票上的二维码包含了加密之后的乘车人姓名、车次等信息,便于机器识别。快递包裹上的二维码包含的是快递单的信息,包括单号、收件人地址等等,快递员就可以用识别器直接解读。如果你想要给朋友写一封信又不想让他妈妈看到,也可以把信转化成二维码之后打印出来交给你的朋友(当然,如果他妈妈了解二维码知识,就会尝试用手机上的二维码解码器来解读)。

现在,二维码最常见的使用场景大概就是扫码支付了。你可以用手机扫描商家的二维码,并直接打开支付软件付款;或是让商家扫描你的付款码收钱。这其中的奥妙仍然是二维码本身内部蕴含的信息。商家二维码中包含的信息其实是网址。比如说,如果你打开支付宝的“收钱”页面,截屏发到电脑上,然后用随便哪个网页版二维码解码器解码,会解出像这样的字符串:https:∥qr.alipav.com/fkx15663nbtiwpiomkd3f4b?t=1611382295768。其中第一部分指向支付宝(alipay.com)的网站,斜杠后面的字符串则包含了收款人的代码和一些验证码。手机上的二维码解码器对于包含网址的二维码做过优化,解码之后会自动打开网址或者打开对应的App,然后App就会识别斜杠后面的部分并处理。支付宝App拿到这个地址后,就会打开付款界面了。

1948年,卓克索理工学院里一位名叫Norman Joseph Woodland的年轻人从摩尔斯电码入手,和他的朋友Bernard Silver联合发明了条码技术,并于1949年申请专利。1974年,一盒10条装的箭牌口香糖成了第一个使用条形码的商品。

学科标签 数学

编码,即将信息从一种形式或格式转换为另一种形式。比如我们生活中接触到的条形码和二维码都是将信息转换后的結果。那么,你能用8根或长或短,或黑或白的线,组合出不同的编码吗?你能搭配多少种组合?

猜你喜欢
编码方式电码细线
ZPW-2000A站内电码化关键电路的设计
动车所电码化二次优化问题
细线转圈
库尔勒下行到发场电码化特殊改频电路的改进
站内特殊区段电码化设计
GCOA算法
可穿戴式多通道传感系统功能需求分析及设计
混合编码方式自适应差分进化算法优化设计宽带天线
浅谈计算机网络通信中实时差错控制技术