标题有些夸大,并且由于设备不全,试验其实也没有做完,描述一遍好了。
小时候接触过从有钱亲戚家淘汰下来的裕兴电脑学习机,或者称呼其正式名称,「裕兴新世纪普及型电脑」,记得型号是F型,已经处于学习机的中后期,可以使用真正的3.5英寸软盘进行程序存储,但当时听说早期型号的学习机可以向普通录音带存储程序,感觉很神奇,却始终未能得见。
许多年以后,有关FC学习机的记忆大多已经淡忘,却一直对普通录音带存储数据念念不忘。最近有点闲,在Google上搜索,终于找到一点可以用现成编码方式组合解决方案的线索,现总结如下:
一、原始方案
方案来自这篇博文,使用主板的板载声卡,配合Ham Radio Deluxe套件中的Digital Master 870将数据编码为RTTY(Radio TeleTYpe 无线电传)信号(如有必要可以对数据使用Base64等方式进行预编码),将输出的音频在外部用卡式录音机进行录制保存,并在需要的时候逆向操作,提取其中的数据。
二、改进方案
由于板载声卡通常有噪音,会造成RTTY接收程序随机接收到无关字符,且RTTY的默认编码博多电码(Baudot)无法传输小写字母和部分标点,于是进行少许改进后,编码方案如下:
- 字符串编码规则为:所有数据首先经过Base64编码,然后进行字符替换,大写字母和数字保留原样,小写字母前加’(西文单引号)为标记,Base64编码后的/(西文斜杠)保留原样,+(西文加号)因博多码不支持修改为-(西文减号),补位=(西文等号)去掉;
- 完整的文件数据串以?(西文问号)开头;
- 编码后的文件名,以及分隔符:(西文冒号);
- 编码后的原始文件MD5值(大写)(由于只包含大写字母和数字,其实和编码前没有区别),以及分隔符(西文冒号);
- 编码后的原始文件数据;
- 结束符号;(西文分号)。
从数据字串到音频的转换及其逆向操作使用MMTTY进行,而从编码字串中恢复数据基本就是拆分后逆向恢复的过程,唯一需要注意的是由于编码时忽略了Base64字符串最后的补位字符=(西文等号),需要按照Base64的编码规则(长度一定是4的倍数)将缺少的=补上,例如:解码后的字符串长度为61,在进行Base64解码前就要补上3个=。
三、具体实现
由于我只是有点闲而没有很闲,并且也缺乏无线电和数据编、解码方面的理论知识,所以只在理想状态即使用声卡的内录(从「立体声混音」设备录制)下做了试验,效果还说得过去。
写了个小程序进行编解码工作,因为代码写得很丑而且并没有实用性(见下文),仅贴一张截图,演示和下载就免了。
四、不足之处
1、由于只在理想环境下进行过操作,没有实际接入录音机进行「上传」「下载」试验,现行编码方案亦未包含容错处理,并不适合实际使用。
2、通过实际操作发现:将文件名为TEST.TXT、大小为11字节的文件进行编码,并使用MMTTY的默认设置(速度最快)录音后,需要约11秒的时间才能传输完编码后的64字节数据,数据膨胀为原始文件的6倍,以此计算,同样长度文件名的原始文件每KB数据将用掉17分钟的音频进行保存,存取速度仅为1bps,较常见的卡式录音带为90分钟,每面45分钟,则单面最多仅能记录2.6KB左右的数据,一盘磁带的容量仅为5KB左右。而早在1970年的PC机上,使用FSK(频移键控)编码的普通录音带数据存储已可达到500-2000bps的比特率,在2000bps下90分钟磁带的单面存储量即有660KB,是我的方案的132倍,如采用现代调制解调器上使用的QPSK(正交相移键控)编码,存储速度将能达到10-17Kbps,同样的每盘磁带将能存储60MB的数据,是我的方案的一万两千多倍,故本文的方案存储密度极其低下,不具备实用性。
3、另外,某16GB容量U盘为49.9元,每MB存储成本为0.003元,某宝上60分钟的杂牌录音带为1.3元每盘,依前述每盘可以存储5KB计算,每MB存储成本为266.24元,是U盘的接近9万倍,存储成本极其高昂,完全不具备实用性。
五、小结
一如前述,由于我只是有点闲而没有很闲,所以这也只是个实验性的东西,当笑话看就好╮(╯▽╰)╭
六、后记
写完之后去MMTTY的官网MM HAMSOFT上看了一下,发现还有另一款名叫MMVARI的软件,支持BPSK的调制方式且支持高速率传输,在仍然使用文本方式提交数据的情况下,可以更有效率地将数据进行转换,不过已经不愿再折腾了。5月4日更新:BPSK在最高速度250.0Bps下每盘90分钟录音带最高可存储大约100KB的数据。
5月4日的重新试验也让我明白了一个根本道理:想提高数据存储密度,不应该依靠把Binary进行Base64编码这种会将数据量翻倍的做法,而应该将二进制数据进行压缩编码,这就超出了我的知识范围(好窄),也就不用继续做实验了。

注:所有评论将在审核通过后显示,请不要在评论内容的任何位置出现链接,否则您的评论将被自动移入回收站,且永远不会被复审。
All comments will be available after being manually reviewed, please do not include any links anywhere in your comment, otherwise your comment will be automatically deleted and are not eligible for review.