摩斯电码
摩斯电码是一种把字母、数字和标点符号编码成「点」(·,dot/dit)和「划」(—,dash/dah)两种信号的字符编码方式,由 Samuel Morse 等人在 19 世纪为电报通信设计。如今通用的是「国际摩斯电码」,早期还存在一套差异较大的美式摩斯电码。它是一种变长编码:出现频率高的字符编码更短,例如 E 是一个点,T 是一个划。
它的关键在于时间:以「点」为基本单位,划的长度约等于 3 个点;同一字符内的信号间隔为 1 个单位,字符之间为 3 个单位,单词之间为 7 个单位。在文本或代码里,通常用 . 表示点、- 表示划,字符之间用空格分隔、单词之间用 / 分隔,例如 SOS 写作 ... --- ...。
使用中要注意几点:
- 它虽被叫做「摩斯密码」,但本质是公开编码而非加密,任何拿到对照表的人都能还原,不提供任何保密性。
- 它区分字母大小写没有意义——摩斯只有一套字母表,解码结果一般视为大写。
- 著名的
SOS求救信号实际是连续发送的···———···,中间不留字母间隔,并非三个独立字母。
常见问题
摩斯电码是一种加密算法吗?
不是。它是公开的字符编码,只做「字符↔点划」的一一映射,任何知道对照表的人都能直接解码,因此不具备保密性。如果需要保密,应在编码前或后再做真正的加密。
点和划在程序里一般怎么表示?
最常见的约定是用 . 表示点、- 表示划;同一单词内字符之间用一个空格分隔,单词之间用 / 分隔。例如 HI 是 .... .. ,而 HI THERE 会写成 .... .. / - .... . .-. .
「摩尔斯电码」和「摩斯电码」是一回事吗?
是的,只是 Morse 的不同音译,指同一套编码。实际使用时更需要区分的是「国际摩斯电码」和早期的「美式摩斯电码」,两者部分字符编码不同,现代通信基本都用国际版。