【发布时间】:2020-03-03 11:26:34
【问题描述】:
我有一些二进制数据,我想在二维码中编码然后能够解码,所有这些都在 bash 中。搜索后,看起来我应该使用qrencode 进行编码,使用zbarimg 进行解码。经过一番故障排除后,我仍然无法解码我编码的内容
知道为什么吗?目前我最接近解决方案的是:
$ dd if=/dev/urandom bs=10 count=1 status=none > data.bin
$ xxd data.bin
00000000: b255 f625 1cf7 a051 3d07 .U.%...Q=.
$ cat data.bin | qrencode -l H -8 -o data.png
$ zbarimg --raw --quiet data.png | xxd
00000000: c2b2 55c3 b625 1cc3 b7c2 a051 3d07 0a ..U..%.....Q=..
看起来我不是很远,但仍有一些事情发生。
编辑 1:一种可能的解决方法是使用 base64 包装,如@leagris 的回答中所述。
编辑 2:使用 base64 编码会使消息的大小加倍。我首先使用二进制的原因是为了节省大小,所以我想避免这种情况。不接受@leagris 的答案,因为我希望它是“完整的二进制”,抱歉。
编辑 3:截至 2020 年 3 月 3 日,这似乎是 zbarimg 的一个众所周知的问题,并且正在提出解决此问题的拉取请求:
https://github.com/mchehab/zbar/pull/64
编辑 4:如果您知道 Linux 上的另一个命令行工具能够解密具有二进制内容的二维码,请随时告诉我。
【问题讨论】:
标签: bash binary decode qr-code encode