Jer*_*wen 23 file-transfer handwriting paper data-integrity
我正在寻找一种仅使用笔和纸传输文件的方法。
这有点类似于paperbak,除了我要找的密度要低得多,而且我不想使用打印机或扫描仪。
显然,第一个答案是Base64编码。但是写入和读取如此大量的字符必然会导致错误。就我而言,任何错误都是不可接受的。
第二个答案可能是Reed-Solomon 纠错码(例如,使用rsbep)。但是,这也是一个问题,因为根据我的理解,Reed-Solomon 代码不会纠正插入/删除错误,在这种情况下,这可能比替换错误更有可能。
是否有任何程序可以使用插入/删除感知纠错码对任意文件进行编码/解码?最好它应该适用于 Windows、Linux 和 Mac OS X
显然,对一般问题的任何其他解决方案都是受欢迎的。
我怀疑这是否otherwise transcribing it will be too difficult
会成为一个问题。
假设您有红色、绿色、蓝色和黑色。您可以编写一个脚本,将数据转换为字母的集合RGBY
,例如:(RGBYGBRYBGBYRYYBYBRYYG
甚至Red Green Blue Black Green Blue Red Black...
在 Excel 工作表中),然后再转换回来。只需将二进制数据从基数 2(或十六进制数据从基数 16)转换为您所采用的颜色数量的基数(本例中为 4)即可。
现在,最合乎逻辑的方法是为自己选择 16 种颜色。这样,您需要使用的点数量减少了 4 倍,这使得在笔之间进行切换是值得的。如果需要,这允许您在纸上写入 4 倍的数据,或者在放置点时可能会降低 4 倍的准确度,缩放比例取决于您。我真的建议不要把每一点都画出来。
例如,必须乘以二才能得到可以放入网格5565 bytes
中的十六进制数11130 hexadecimals
(与 相对) 。44520 bits
106 x 106
根据数据的类型,您可能可以进行一些优化......
提示:尝试选择最独特(最具对比性)的颜色......
可以使用一支笔的替代方案:
用不同的符号表示不同的十六进制-
, /
, |
, \
, +
, ...
用小像素字体表示不同的十六进制,看我的头像。
这使得使用 Base 32(或 Base 36)之类的东西甚至很有用。请注意,Q
和9
是相同的,因此您需要将 的右上角像素Q
设置为白色,以便清楚地区分。对于您的示例, Base 32 仅需要一个53 x 53
网格,再加上一点间距来区分字母。