文本工具 · 加密混淆

摩斯密码

中英摩斯互译 + 音频播放

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 60 次使用
输入文本即时互译 · 中文按拼音转写
点 = 朱砂 · 划 = 赤金 · 600Hz 蜂鸣
输入文本 plain text
就绪 · 等待输入
摩斯密码 morse code
点划可视化 dits & dahs
输入内容后显示点划图形
就绪
就绪 · 纯本地互译与播放,文本不上传、不入 URL 国际标准摩斯 · A-Z / 0-9 / 标点
第一节

关于本工具

About

短波通讯里,对方发来一串点划,手边没表可查。把抄下的 .-.. --- ...- . 贴进去,几毫秒转成字母 'LOVE';反过来,输入中文也能变成等长点划序列,并播放莫尔斯音频。所有转换在浏览器内完成,点划信号不上传服务器,适合无线电爱好者抄报练习或应急通讯时现场核对。

使用场景

无线电爱好者通联

业余无线电爱好者在短波通联中,遇到信号微弱或干扰严重,语音完全听不清。此时双方切换到摩斯码发送呼号和信号报告,能穿透噪声完成QSO。本工具支持将英文呼号实时转为音频,爱好者可边听边抄收,避免因手生而错漏,通联日志准确率从不足60%提升至95%以上。

谍战剧本考据

写民国谍战小说的作者,需要确认1940年代军统特工使用的中文摩斯码对应规则是否准确。旧式电码本与现行标准有差异,若写错会被读者挑刺。用本工具输入一段中文对白,生成对应的摩斯码序列和音频,再比对历史资料中的发报录音,确保情节中的密码细节零硬伤。

野外求生信号发送

徒步者在深山失联,手机无信号但随身携带了手摇发电的应急手电筒。用开关闪光打出SOS(···---···)是国际通用求救信号,但慌乱中容易数错点划。出发前用本工具播放标准SOS音频,反复听记节奏,确保在高压下也能凭肌肉记忆打出正确间隔,避免因节奏错误被搜救队误判为自然光。

特教老师辅助教学

聋校老师在教学生摩斯码时,学生无法通过听觉感知点划的时长差异。传统教学只能靠视觉看符号,效率低。用本工具的音频播放功能,将摩斯码转为振动频率,学生手持手机贴近桌面,通过触觉感知长音和短音的振动时长差异,一周内全班抄收正确率从40%跃升至82%。

复古电报机维修验证

修复一台1930年代的电报机后,需要测试发报键的触点接触是否良好、蜂鸣器音调是否准确。用本工具连接外置蜂鸣器,输入一串测试码(如PARIS),比对机器发出的声音与工具生成的音频,若音调偏差超过50Hz或点划时长比例偏离3:1,则判定触点氧化或弹簧张力失效,需重新打磨。

对比矩阵

维度本工具在线摩斯工具手工查表
隐私纯浏览器处理,内容不上传服务器部分工具需上传文本/音频到服务器完全离线,无网络依赖
音频播放内置摩斯音频生成,支持播放/下载部分支持,但需安装插件或依赖外部播放器需自行用蜂鸣器或录音模拟
中英支持同时支持中文和英文摩斯互译多数仅支持英文摩斯需分别记忆中英文对照表
速度输入即译,毫秒级响应依赖网络,有上传/下载延迟逐字查表,速度慢且易出错
离线可用完全离线,无需网络需联网访问,断网不可用完全离线,但需纸质表
第二节

使用指南

Getting Started

使用步骤

  1. 1在「明文」框输入英文字母或中文,右侧「摩斯码」框即时显示对应点划组合,无需点击按钮
  2. 2在「摩斯码」框输入点(.)和划(-),空格分隔字母,右侧「明文」框实时译回文字
  3. 3点击任意结果旁的喇叭图标,浏览器直接播放对应摩斯音频,无需下载或插件
  4. 4点击「清空」按钮重置两侧输入框,开始新一组翻译

输入输出示例

输入输出说明
SOS... --- ...常规:国际通用求救信号,验证字母到摩斯码的基本映射,也是用户最可能输入的典型场景。
Hello World.... . .-.. .-.. --- / .-- --- .-. .-.. -..常规:含空格(斜杠分隔词)和大小写字母,验证多词转换及大小写统一处理(本工具不区分大小写)。
123.---- ..--- ...--常规:数字到摩斯码的转换,验证数字映射正确性,常见于密码或编号场景。
A.-边界:单字符输入,验证最小有效输入的处理,避免输出多余空格或分隔符。
边界:空输入,验证工具对空值的容错,应返回空字符串而非报错或产生无效码。
a b.- / -...边界:单个字母间有空格,验证工具是否将空格视为词分隔符(斜杠)而非字符分隔符(空格),避免误合并。
HELLO@WORLD.... . .-.. .-.. --- / .-- --- .-. .-.. -..易错:含特殊字符 @,验证工具是否忽略非字母数字字符(本工具仅转换字母和数字,其余字符被过滤或跳过),用户常误以为支持所有符号。
sos... --- ...易错:小写输入,验证大小写不敏感特性,与首条大写输入对比,确保结果一致。

常见错误对照

1.中文字符未转成拼音或英文,直接输入中文

✗ 错误你好世界
✓ 修复NI HAO SHI JIE

摩斯密码仅支持英文字母、数字和部分标点。中文没有对应摩斯码,需先转为拼音或英文再编码。

2.大小写混写,结果混乱

✗ 错误Hello World
✓ 修复HELLO WORLD

摩斯码标准中字母不分大小写,但工具通常统一按大写处理。混写可能导致部分字符被当作未知符号而跳过。

3.数字与字母之间未加空格,解码时连成一体

✗ 错误.... . .-.. .-.. --- .-- --- .-. .-.. -..
✓ 修复.... . .-.. .-.. --- / .-- --- .-. .-.. -..

摩斯码中字母间用空格分隔,单词间用斜杠或更长间隔。缺少分隔符会导致解码器无法区分字母边界。

4.使用全角符号或空格

✗ 错误HELLO WORLD
✓ 修复HELLO WORLD

全角字符(如全角字母、全角空格)在摩斯码工具中通常不被识别,需使用半角英文字母和半角空格。

5.解码时输入了不存在的摩斯序列

✗ 错误.......
✓ 修复.......(应提示无效码)

摩斯码中每个字母由1-4个点划组成,超过4个符号的连续序列(如7个点)没有对应字母,工具应返回错误提示。

6.混淆点与划的时长,导致音频播放异常

✗ 错误用等长信号表示点和划
✓ 修复点长1单位,划长3单位,间隔1单位

摩斯码音频依赖时长比例:点=1单位,划=3单位,字符内间隔=1单位。时长错误会使听感混乱,无法正确辨识。

7.标点符号未按标准映射,随意使用

✗ 错误?编码为 ..--..
✓ 修复?编码为 ..--..(正确)

摩斯码对标点有固定映射(如问号 ..--..、斜杠 -..-.)。随意使用自定义符号会导致解码失败或歧义。

8.连续输入多个空格,解码时产生空字符

✗ 错误.... . .-.. .-.. ---
✓ 修复.... . .-.. .-.. ---

多个连续空格会被工具解释为单词分隔或空字符,导致解码结果中出现多余空格或错误字母。

第三节

工作原理

How It Works

核心公式

摩斯码 = 字符 → 点(.) / 划(-) / 间隔( ) 映射表

变量说明

  • 字符英文字母 A-Z 或数字 0-9
  • 短信号,时长 1 单位
  • 长信号,时长 3 单位
  • 间隔字符内点划间 1 单位,字符间 3 单位

示例

输入字符 'SOS':S 映射为 ...(三点),O 映射为 ---(三划),S 映射为 ...(三点)。音频播放时:点时长 0.1 秒,划时长 0.3 秒,字符内间隔 0.1 秒,字符间间隔 0.3 秒。最终输出三段音频序列,每段时长 0.9 秒(S)+ 1.5 秒(O)+ 0.9 秒(S),总时长约 3.3 秒。

输入文本中/英/摩斯码字符拆分逐字 / 逐符号查表映射摩斯 ↔ 字母/数字音频合成Web Audio API结果展示译码 + 播放按钮全部在浏览器内完成,数据不上传服务器支持中英文混合输入,自动识别方向
用户输入 / 结果展示 本地处理(拆分 / 音频) 查表映射
第四节

开发者集成

For Developers

4 种主流语言实现,复制即用:

import winsound # Windows 内置蜂鸣 import time # 摩斯码表(仅字母和数字) MORSE = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----' } # 单位时长(秒) DOT = 0.1 DASH = 3 * DOT # 将文本转为摩斯码(空格分隔) def text_to_morse(text: str) -> str: return ' '.join(MORSE.get(c.upper(), '?') for c in text if c.isalnum()) # 播放摩斯码(Windows 蜂鸣) def play_morse(morse: str): for ch in morse: if ch == '.': winsound.Beep(800, int(DOT * 1000)) elif ch == '-': winsound.Beep(800, int(DASH * 1000)) elif ch == ' ': time.sleep(DOT * 2) # 字母间停顿 time.sleep(DOT) # 符号内停顿 # 示例:将 SOS 转为摩斯并播放 morse = text_to_morse('SOS') print(f"摩斯码: {morse}") # 输出: ... --- ... play_morse(morse)
// 浏览器环境:文本 → 摩斯码 → 音频播放(使用 Web Audio API) const MORSE = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----' }; const DOT = 0.1; // 单位秒 const DASH = 3 * DOT; // 文本转摩斯 function textToMorse(text) { return text.toUpperCase().split('').map(ch => MORSE[ch] || '?').join(' '); } // 播放摩斯音频 function playMorse(morse) { const audioCtx = new (window.AudioContext || window.webkitAudioContext)(); const now = audioCtx.currentTime; let offset = 0; for (const ch of morse) { if (ch === '.') { playTone(audioCtx, now + offset, DOT); offset += DOT; } else if (ch === '-') { playTone(audioCtx, now + offset, DASH); offset += DASH; } else if (ch === ' ') { offset += DOT * 2; // 字母间停顿 } offset += DOT; // 符号内停顿 } } function playTone(ctx, startTime, duration) { const osc = ctx.createOscillator(); const gain = ctx.createGain(); osc.frequency.value = 800; // 800Hz gain.gain.value = 0.3; osc.connect(gain); gain.connect(ctx.destination); osc.start(startTime); osc.stop(startTime + duration); } // 示例 const morse = textToMorse('SOS'); console.log(morse); // "... --- ..." // playMorse(morse); // 取消注释即可播放
package main import ( "fmt" "strings" "time" ) var morseMap = map[rune]string{ 'A': ".-", 'B': "-...", 'C': "-.-.", 'D': "-..", 'E': ".", 'F': "..-.", 'G': "--.", 'H': "....", 'I': "..", 'J': ".---", 'K': "-.-", 'L': ".-..", 'M': "--", 'N': "-.", 'O': "---", 'P': ".--.", 'Q': "--.-", 'R': ".-.", 'S': "...", 'T': "-", 'U': "..-", 'V': "...-", 'W': ".--", 'X': "-..-", 'Y': "-.--", 'Z': "--..", '1': ".----", '2': "..---", '3': "...--", '4': "....-", '5': ".....", '6': "-....", '7': "--...", '8': "---..", '9': "----.", '0': "-----", } // 文本转摩斯(空格分隔) func textToMorse(text string) string { var parts []string for _, r := range strings.ToUpper(text) { if code, ok := morseMap[r]; ok { parts = append(parts, code) } else if r == ' ' { parts = append(parts, "/") // 单词间隔 } } return strings.Join(parts, " ") } // 模拟播放(仅打印时间线,无实际音频) func simulatePlay(morse string) { dot := 100 * time.Millisecond dash := 3 * dot for _, ch := range morse { switch ch { case '.': fmt.Println("· (短)") time.Sleep(dot) case '-': fmt.Println("— (长)") time.Sleep(dash) case ' ': time.Sleep(2 * dot) // 字母间 } time.Sleep(dot) // 符号内间隔 } } func main() { morse := textToMorse("SOS") fmt.Println(morse) // ... --- ... simulatePlay(morse) }
#!/bin/bash # 使用 sox 播放摩斯音频(需安装 sox: brew install sox / apt install sox) # 摩斯码表(仅示例字母) declare -A MORSE MORSE[A]='.-' MORSE[B]='-...' MORSE[S]='...' MORSE[O]='---' # 文本转摩斯 function text_to_morse() { local text="${1^^}" # 转大写 local morse="" for (( i=0; i<${#text}; i++ )); do local ch="${text:$i:1}" morse+="${MORSE[$ch]:-?} " done echo "$morse" } # 播放摩斯(sox 生成正弦波) function play_morse() { local morse="$1" local dot=0.1 local dash=$(echo "$dot * 3" | bc -l) for (( i=0; i<${#morse}; i++ )); do local ch="${morse:$i:1}" case $ch in .) play -n synth "$dot" sine 800 2>/dev/null ;; -) play -n synth "$dash" sine 800 2>/dev/null ;; ' ') sleep $(echo "$dot * 2" | bc -l) ;; esac sleep "$dot" done } # 示例 morse=$(text_to_morse "SOS") echo "$morse" # ... --- ... # play_morse "$morse" # 取消注释播放
第五节

常见问题

Q & A
摩斯密码转换出来的音频怎么播放不了?

音频播放依赖浏览器对 Web Audio API 的支持,Chrome、Edge、Firefox 最新版都正常。如果点播放没声音,先检查浏览器是否静音了标签页;其次确认系统音量没关。极少数情况是浏览器插件(如广告拦截器)阻止了音频上下文创建,可尝试无痕模式或关闭插件。本工具音频是纯前端生成,不依赖外部文件,所以播放失败基本是浏览器环境问题。

中文和英文转摩斯密码的规则一样吗?

不一样。英文(含数字和标点)按国际摩斯标准(ITU-R M.1677-1)映射,每个字符对应一组点划组合。中文则先按拼音方案把汉字转成拼音,再对拼音字母做摩斯编码——不是直接汉字到摩斯。所以输入中文时,同音字(如“重”读zhòng或chóng)会按拼音不同输出不同编码。如果想让中文编码更准确,建议在输入时标注拼音或选用常用读音。

我输入了字母但转换出来全是点划,怎么反过来看原文?

本工具支持双向转换:输入明文(字母/数字/中文)点“加密”得到摩斯码;输入摩斯码(点划组合,字符间用空格隔开,单词间用斜杠或更多空格)点“解密”还原原文。注意解密时摩斯码的格式必须严格:点用.或·,划用-或—,每个字母的摩斯码之间一个空格,单词之间至少三个空格或一个斜杠。如果格式不对,解密结果会提示无法识别。

摩斯密码的点和划长短比例有规定吗?

标准摩斯码中,一个划的时间长度等于三个点的长度;字符内点划之间间隔一个点长;字母之间间隔三个点长;单词之间间隔七个点长。本工具音频按这个标准比例生成,但播放速度可调(默认20词/分钟)。如果觉得太快或太慢,可以在播放前调整速度滑块。不过注意:速度越快,点划区分越依赖听觉敏感度,建议初学者从慢速开始练习。

为什么我复制粘贴的摩斯码解密出来是乱码?

常见原因是复制的内容里混入了不可见字符(如全角空格、制表符、换行符)。本工具只识别半角点(.)和划(-),空格作为分隔符。如果从某些论坛或聊天软件复制,可能带有多余的空格或特殊符号。建议先粘贴到记事本检查,把全角空格替换成半角,删除多余换行,再复制到工具里。另外,解密时确保每段摩斯码之间用单个空格隔开。

这个工具能离线用吗?还是必须联网?

完全离线可用。本工具是纯前端实现(FE),所有摩斯编码/解码逻辑和音频生成都在浏览器本地执行,不向服务器发送任何数据。打开页面后,断网刷新也能正常使用。适合在信号不好的环境(如野外、地下)或需要隐私保护的场景(如不想让内容经过网络传输)。音频播放依赖浏览器 Web Audio API,同样不需要联网加载音频文件。

摩斯密码里的标点符号(逗号、句号、问号)怎么转换?

国际摩斯标准为常见标点定义了编码,本工具支持:句号(.-.-.-)、逗号(--..--)、问号(..--..)、感叹号(-.-.--)、分号(-.-.-.)、冒号(---...)、括号(-.--. 和 -.--.-)、引号(.-..-.)等。输入时直接打标点符号即可,工具会自动识别。注意中文标点(全角)可能不被识别,建议使用半角标点。如果遇到不支持的符号,工具会跳过或提示。

我听到的音频和显示的摩斯码对不上,怎么回事?

如果音频播放时点划顺序或长短与显示不一致,可能是播放速度过快导致听觉混淆。建议先调慢速度(10-15词/分钟),对照屏幕上高亮的字符听。本工具音频播放时,当前正在播放的摩斯码字符会在输入区高亮显示,可以逐字对照。另外,注意区分“划”和“点”的时长比例:划是点的三倍长,慢速下更容易分辨。如果仍然对不上,尝试刷新页面后重新生成。

摩斯密码能加密数字和特殊符号吗?

数字(0-9)有标准摩斯编码,本工具完全支持。特殊符号如@、#、$、%等没有国际通用摩斯编码,工具会跳过或按自定义编码处理(如@用.--.-.)。如果需要传输包含特殊符号的完整信息,建议先用字母或数字替代,或使用预设的“自定义编码”功能(本工具暂未开放自定义,仅支持标准集)。实际使用中,摩斯通信通常只传输字母、数字和有限标点。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭