使用方法
- 先选方向:默认「文本 → 摩斯电码」;拿到一段码串要还原成文字时,切到「摩斯电码 → 文本」。
- 在输入框输入或粘贴内容。页面打开时已预置示例 HELLO WORLD,点「载入示例」可随时还原。
- 点「开始转换」,或在输入框按 Ctrl+Enter。文本方向输出以空格分隔字符、以
/分隔单词的码串。 - 反方向译码时,
.与·、-与−会先自动归一化再查表,不必担心符号风格;无法识别的码会指出它是第几个。 - 结果可「复制」或「下载 .txt」;下方对照表默认显示 12 行,点「加载更多」看满 36 条,也可以整表复制成 TSV 或导出 CSV。
这个摩斯电码转换工具能解决什么问题
一是无线电与应急常识核对:业余无线电通联里的 CQ、SOS、AR、SK 这类缩写,本页码表和正文都给出了逐元素写法,抄练习日志或核对呼号时直接对照。
二是出题与道具制作:密室逃脱题面、剧本杀线索、影视字幕里的滴答声,都需要一段确定无误的码串。本工具保证你写进道具的每个元素都能逐位核对,不会凭记忆拍错。
三是教学演示:讲「信息编码」课时,用 HELLO WORLD 这种一眼能对上号的词演示字符间隔与单词间隔,比讲抽象定义有效。
四是理解无障碍输入:部分手机输入法支持摩斯输入,想知道自己名字怎么拍,输入拼音字母即可得到逐字码串。
本页不做的事:不做音频解码——把一段滴答声的录音还原成文字需要信号处理,超出查表转换的范围;也不做中文电码(汉字先转四位数字的那套电码本),那是另一套体系。
原理与规则说明:时间单位与码表结构
码表采用 ITU-R M.1677-1 定义的国际通用制式:26 个字母各由 1~4 个元素组成,0~9 十个数字固定 5 个元素,共 36 条。元素只有两种——短音 dit(·)与三倍长的 dah(−)。时长以 dit 为基准单位:dah = 3,码内元素间隔 = 1,字符间隔 = 3,单词间隔 = 7。
dit 的绝对时长由拍发速度决定,业界用 WPM(每分钟词数)衡量,基准词是 PARIS:这个词连上结尾的单词间隔恰好 50 个单元,所以 dit 时长 = 1200 ÷ WPM 毫秒。15 WPM 时 dit = 80 ms,dah = 240 ms,字符间隔 240 ms,单词间隔 560 ms;20 WPM 时分别是 60 / 180 / 180 / 420 ms。本页做的是文本层转换,不涉及声音,但这些时长决定了你输出码串里空格与 / 的对应关系:字符之间一个空格代表 3 个单元的静默,/ 代表 7 个单元。
转换函数本身是两次查表。编码方向:输入大写化后逐字符查码表,字符之间插空格,单词之间插 / ;解码方向:按 / 分词、按空格分字符、逐码反查。两向都是纯查表运算,不存在近似或拟合,结果要么逐位一致,要么明确报错。
完整示例(数值仅作演示)
页面预置示例与这里是同一条:HELLO WORLD,编码结果为:
.... . .-.. .-.. --- / .-- --- .-. .-.. -..
逐词拆开:H = ····,E = ·,L = ·−··,L = ·−··,O = −−−;W = ·−−,O = −−−,R = ·−·,L = ·−··,D = −··。把每个元素的 1 或 3 个单元、码内间隔 1、字符间隔 3、词间隔 7 全部加起来,这句话共 111 个单元:按 15 WPM 拍发需要约 8.88 秒,20 WPM 约 6.66 秒。再举紧急信号 SOS:作为整体信号时三个字母之间不插字符间隔,写成 ···−−−···,共 23 个单元,15 WPM 下 1.84 秒——这正是求救信号听起来「急促连贯」的原因。
输入范围与摩斯电码对照表
文本方向接受 26 个英文字母(不区分大小写)、数字 0~9 和空格,其他字符会报错并指出是哪一个。码长分布是 2 条 1 元素码(E、T)、4 条 2 元素、8 条 3 元素、12 条 4 元素、10 条 5 元素(全部数字)——常用字母分到的码更短,这是早期电报省时间的遗产。前 12 行如下,点「加载更多」看全部:
| 字符 | 摩斯码 | 元素数 |
|---|---|---|
| A | ·− | 2 |
| B | −··· | 4 |
| C | −·−· | 4 |
| D | −·· | 3 |
| E | · | 1 |
| F | ··−· | 4 |
| G | −−· | 3 |
| H | ···· | 4 |
| I | ·· | 2 |
| J | ···− | 4 |
| K | −·− | 3 |
| L | ·−·· | 4 |
常用缩写与程序信号(括号内是拍发方式):SOS(整体连拍)= ···−−−···;CQ(泛呼,字符间隔照常)= −·−· −−·−;AR(报文结束)= ·−−·−;SK(通联结束)= ···−·−;BT(分段)= −···−。
边界、歧义与精度说明
编码唯一,解码未必。文本方向的每一步都是确定的查表;但反方向如果去掉所有分隔符,36 条码里有 34 条可以由其他码拼接得到,只有 E(·)和 T(−)例外。例如 −−·· 是 Z,也可以读成 M + I;····− 是数字 4,也可以读成 H + T;−−−−− 是 0,也可以读成 M + O。十个数字全部能由字母拼出,这正是歧义的重灾区。真实电波里这些歧义靠间隔时长消除——3 个单元的静默是字符边界,7 个单元是单词边界;落到文本上就是空格和 /。所以本页解码严格按分隔符切分,不做任何猜测,遇到查不到的码会指出「第 n 个码 ·−− 识别不了」并停止。
其余边界:输入归一化时 . 归为 ·,- 与 _ 归为 −,连续空白折叠成一个;输入超过 5000 字符直接拒绝,防止一次渲染几千行码串卡住页面;大小写在编码前统一大写,因为国际制式本来就不区分大小写。常见误用是拿本页码表去拍美式铁路摩斯(American Morse)——那是另一套历史码表,不少码位与 ITU 制式不同,查出来的串对不上老文献是正常现象,不是本页算错。
常见问题
为什么解码必须用空格和 / 分隔?
因为没有分隔的码串在数学上歧义严重:34 条码可由其他码拼接,比如 ····· 既可以是数字 5,也可以是 S+I、H+E、E+I+S 等多种读法。本页选择严格切分而不是猜,猜错一个字母,后面整段都会错位。
SOS 为什么三个字母要连着拍?
把它当一个整体信号而不是三个字母。连拍省去了两个字符间隔(各 3 单元),23 个单元一气呵成,识别特征极其鲜明;若按普通单词拍,S、O、S 之间的停顿反而容易让收听方误判成别的字母组合。
WPM 到底是怎么定义的?
每分钟拍发多少遍标准词 PARIS。这个词含词间隔恰好 50 个单元,于是 dit 时长 = 60000 ms ÷ 50 ÷ WPM = 1200 ÷ WPM。15 WPM 就是 dit 80 ms。用「真实单词」而不是抽象单元定义,是为了让不同人说的 WPM 可以直接比较。
中文能转成摩斯电码吗?
要绕一道:先按中文电码本把每个汉字换成四位数字,再用本页把数字拍成 5 元素码。例如「中」的电码是 0022,拍的是 −−−−− −−−−− ··−−− ··−−−。本页没有内置电码本,你从别处查到四位数字后粘进来即可。
大小写会影响结果吗?
不会。国际制式只为字母、数字和少量标点定义了码,没有大小写之分。本页编码前统一转大写,是为了让查表逻辑只维护一份 36 条的码表;你输入 hello 和 HELLO 得到完全相同的结果。
拍发出来时,dit 和 dah 具体多长?
dit = 1200 ÷ WPM 毫秒,dah 恰好是它的 3 倍,元素间隔、字符间隔、单词间隔分别是 1、3、7 个 dit。任何载具都行——声音、闪光、眨眼,只要时值比例对,对方就能按同一套规则还原。
我查到的个别码和这里不一样,谁对?
大概率你查到的是 19 世纪末美式铁路摩斯或更早的变体:比如美式 C、O、R、S 与国际制式完全不同。本页遵循现行 ITU-R M.1677-1 国际制式,也就是今天业余无线电和应急信号通用的那套。
输入内容会被上传或记录吗?
不会。转换是两次对象查表,全部在当前页面完成,不发任何网络请求。想验证,打开开发者工具的 Network 面板再点几次「开始转换」,不会看到新请求。