嘟嘟社区

还是二维码重不重复问题


看了刚才发的帖子各位大大的回答,明白二维码是可能重复的,但是机构不一样没有意义,我就想到会不会出现这样情况,举例:去菜市场买菜,老板阿三给了微信的收款二维码,解析出来的字符串是123456789,对应的收款人是阿三,这时候我没注意,用的是支付宝扫二维码,刚好解析出来的字符串是123456789对应有个收款人是李四,那如果我支付了是不是就支付给李四的支付宝了?
避免这种情况发生是不是加个识别码,但扫码出来发现不是我支付宝的码就提示错误,那这个识别码是不是大家都应该有个不一样的,累死广播频率,中央电台用了这个频率上海电台就不能总,那这个管理分配识别码的机构存在吗?
本帖最后由 casm 于 2024-6-24 00:51 编辑

二维码的最高像素可以达到177×177,其中每个像素可以是黑或者白。那么二维码的最大组合是~有限的,虽然这个数量是个天文数字,但字符串的组合是无限的。

主要讨论不是重复问题,而是会不会被用尽。假如123对应的二维码是A,会不会存在另外一个二维码对应是也是123?

答案是当然会,因为把二维码挡住一小部分,照样能扫出相同的结果,所以二维码和字符串是多对一的关系。但是二维码有规定字符串的字数限制,就解决了用尽的问题

你呀,没救了,码都有标识,怎么可能扫出来的只会是1234567,你的收款码那么大那么多的小方块,他可能是1到1000,也不可能是1到9
本帖最后由 casm 于 2024-6-24 00:40 编辑

二维码的组合数量虽然是有限的,但数量极其庞大。在实际应用中,二维码的组合数量足以应对绝大多数需求,不会被轻易用尽。让我们来看看为什么这是如此。

1. 二维码的组合数量
以版本40的二维码为例,它有177×177个模块。虽然每个模块可以是黑或白,但并不是所有的组合都是有效的二维码,因为二维码的结构中有很多固定的模式和错误纠正信息。此外,不同的版本和错误纠正等级也影响可用的组合数量。

即便如此,二维码的组合数量仍然是非常庞大的。版本40的二维码,假设每个模块可以独立地为黑或白(实际上并不是这样,因为有很多结构性限制),那么组合数量将是:

2
177
×
177
=
2
31
,
329
2
177×177
=2
31,329

这是一个非常巨大的数字,远远超出当前任何实际应用的需求。

2. 实际应用中的情况
在实际应用中,二维码不会被用尽,原因如下:

数据需求有限:虽然理论上有无限多的字符串组合,但实际应用中需要编码的字符串数量是有限的。例如,一个公司可能只需要生成数百万或数亿个二维码用于产品追踪、营销活动等。
不同版本和纠错等级:二维码有40个版本和4个错误纠正等级,不同的版本和错误纠正等级可以生成不同的二维码,进一步增加了可用的组合数量。
生成机制:很多应用使用动态二维码,使用URL来指向服务器上的动态内容。这种方法使得二维码的实际数据量需求降低,因为二维码本身只需要包含一个短URL,而具体的数据在服务器上进行处理。
3. 实际案例
即使是在二维码广泛使用的场景,如支付系统、门票系统、产品追踪等,二维码的生成数量远远没有达到其理论上限。例如,微信支付和支付宝的二维码每天被生成和使用数亿次,但这些数量相对于二维码的组合数量仍然是微不足道的。

总结
二维码的组合数量是如此之大,以至于在任何现实可预见的情况下都不会被用尽。即便有某些特定场景需要生成大量二维码,设计合理的生成机制和利用不同版本和错误纠正等级可以确保二维码的唯一性和充足性。

二维码有31329个方格,可以编码3KB 的数据。扫描之后会解析出文字内容,每家都会在开头添加特定标识,比如支付宝是https://qr.alipay.com/xxxxxxxxxxxxxxxxxxxxx,这种情况下不可能重复。

casm 发表于 2024-6-24 00:25
二维码的最高像素可以达到177×177,其中每个像素可以是黑或者白。那么二维码的最大组合是~有限的,虽然这 …

你这就钻牛角尖了,简单点讲假如你QQ是12345它生成的码就是QQ12345,而不是12345,每个码前边都加上QQ这个标识,就不存在冲突或者重复了。明白吗

你用微信扫描支付宝的就知道了
本帖最后由 casm 于 2024-6-24 00:39 编辑

glisten 发表于 2024-6-24 00:31
你这就钻牛角尖了,简单点讲假如你QQ是12345它生成的码就是QQ12345,而不是12345,每个码前边都加上QQ这 …

其实是从数学角度,用极限思维考虑二维码会不会被用尽。就像ipv4的组合虽然很多,但是架不住人口更多,就不够用~

casm 发表于 2024-6-24 00:36
其实是从数学角度,用极限思维考虑二维码会不会被用尽。就像ipv4的组合虽然很多,但是架不住人口更多,就 …

中二少年,别钻研这个了,早点休息吧晚安

张少涵 发表于 2024-6-24 00:30
二维码有31329个方格,可以编码3KB 的数据。扫描之后会解析出文字内容,每家都会在开头添加特定标识,比如 …

也就是定义自己的识别码,每个人自己定义,如果刚好外国也有个支付宝,那就冲突了