当前位置:首页 > 问答 > 正文

DIY摩斯密码翻译器制作教程,从零开始打造你的专属通信工具

我的深夜DIY翻车实录

说实话,我一开始压根没想过要做这玩意儿,那天晚上闲着刷视频,看到一个老电影里有人用摩斯密码发电报,"滴滴答答"的突然就让我来了兴致——要不自己也整一个?反正闲着也是闲着。

先别急着写代码,搞明白这玩意儿是啥

摩斯密码根本不是"密码",其实就是个编码表,每个字母对应一串点和划(比如A是·-,B是-···),最早是电报时代用的,现在嘛...除了装X和真的爱好者谁还用啊(笑)。

DIY摩斯密码翻译器制作教程,从零开始打造你的专属通信工具

我翻出一张1982年的旧杂志内页(我爸收破烂留下的),上面居然有摩斯密码表,字母G的编码居然是"--.",和我网上查的不一样!后来才知道原来国际标准和美国老标准有细微差别——得,还没开始就差点掉坑里。

动手搭个最基础的翻译器

我直接用Python写的,毕竟简单粗暴,最开始的想法特简单:做个字典对应字母和编码不就行了?

DIY摩斯密码翻译器制作教程,从零开始打造你的专属通信工具

morse_dict = {
    'A': '.-', 'B': '-...', 'C': '-.-.',
    # ... 中间省略一堆
    '1': '.----', '2': '..---', ' ': '/'
}

但实际写起来发现坑太多了:

  • 大小写要统一处理(谁打字还分大小写啊)
  • 标点符号根本没人记得住编码(问号居然是..--..)
  • 最要命的是中文完全没法处理(临时改成用拼音替代)

差点让我放弃的音频生成部分

本来想做个能发声的,用蜂鸣器播摩斯码,结果python的winsound在mac上根本用不了,只好换成pydub,调时间参数时差点疯掉——点、划、间隔的时间比例严格得很,快一点就完全听不懂。

DIY摩斯密码翻译器制作教程,从零开始打造你的专属通信工具

测试时我家狗对着音箱狂吠,估计以为是什么外星信号(笑死)。

竟然还能这么玩?

做好基础版后,我突发奇想加了两个功能:

  1. 闪烁模式:用电脑屏幕闪烁来传递信号(半夜测试时把自己眼睛闪花了)
  2. 震动模式:把手机放桌上敲出密码节奏(楼下邻居上来投诉了)

最实用的反而是最无聊的功能——把日常密码转换成摩斯码记在本子上,就算被人看到也看不懂(虽然我自己经常忘记解码规则)。

一些血泪教训

  1. 别试图支持所有特殊符号!90%的人只会用26个字母
  2. 时间间隔参数必须可调节,不同人听力敏感度差太多
  3. 最好加入学习模式,带练习和测验(我后来加了个听写测试,正确率从来没超过60%)

现在这个破程序还在我电脑里躺着,偶尔用来和同样无聊的朋友发中二讯息,有一次把"晚上吃啥"编成密码发群里,结果等到解码完外卖都凉了——所以这玩意儿最大的用处可能是治疗急性子?

要是你也想做一个,我的代码在Github上(项目名还没想好),不过建议还是直接拿来用吧,有些坑真的没必要再踩一遍,毕竟...DIY的乐趣不就在于折腾吗?(虽然大部分时间都在debug)