摩斯电码转换器:敲出点点横横,文字暗号都能秒译

举报
deli007 发表于 2026/09/09 20:44:29 2026/09/09
【摘要】 摩斯电码转换器:敲出点点横横,文字暗号都能秒译

这个工具把「文字 ↔ 摩斯电码」双向翻译做在一个页面里:输入一句中文或英文,马上得到对应的点点横横;反过来粘贴一段摩斯码,也能还原成文字。它还能用 Web Audio 把电码播出来,声音速度和音调都能调。先看成品,再讲怎么用华为云 CodeArts 码道 WebUI 一段话把它做出来、部署上线。

这个工具做什么

它把摩斯电码这件复古又实用的小事做成一个打开即用的转换器:

  • 双向转换:中文 / 英文 / 数字 / 标点都能转成摩斯码,也能反着译回来。
  • 中文无表可逆:中文不做一张巨大字表,而是用 Unicode 码点转数字摩斯,能译回去不丢字。
  • 空格与标点自动处理:空格自动转 / 分隔,常见标点显式编码。
  • 声音播放:用 Web Audio 播放长短音,播放速度和音调都能调。
  • 一键复制:转换结果一键复制,标点自动处理。
  • 6 个常用示例:SOS、HELLO WORLD、你好世界、MAYDAY、数字、中英混合,点了就能看。
  • 深色模式:深色 / 浅色切换,跟随系统或手动记忆。

摩斯电码转换器运行界面

码道开通(免费体验版)

开始之前,先免费开通码道体验版。不需要装任何软件,浏览器就能用:

https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz

开通后有三种使用方式:WebUI(浏览器对话)、TUI(终端命令行)和桌面 IDE(IDE 插件)。本文用 WebUI 版演示。

进入 AI 开发者空间

  1. 浏览器打开 https://devstation.developer.huaweicloud.com/aidevspace?utm_source=opcsfsq&utm_medium=wbwz
  2. 弹窗「请选择要进入的版本」→ 点击 体验版
  3. 首次使用会跳到华为云登录页,扫码登录一次,后续浏览器会话复用
  4. 弹窗「临时凭据自动配置」→ 点击 同意,沙箱自动创建

进入 AI 开发者空间主界面后,先等左侧菜单加载出来,再找到 CodeArts,点击它右侧的浏览器图标,打开码道 WebUI 对话窗口:

AI 开发者空间主界面

打开后码道 WebUI 会先和你打招呼,下方就是需求输入框:

码道 WebUI 欢迎页

小贴士:体验版沙箱 3 小时后自动重置,生成完记得把 index.html 下载保存。

任务描述

在码道 WebUI 输入框粘贴以下需求,回车发送:

开发一个「摩斯电码转换器」单文件网页应用:支持中文和英文文本与摩斯电码双向转换,自动处理空格和标点;能用 Web Audio 播放摩斯电码声音,并调节播放速度与音调;支持一键复制转换结果、内置几个常用示例,并带深色模式。界面简洁清晰,所有代码写在一个 index.html 里。完成后用部署功能部署成可访问的网页应用,并告诉我访问地址。

输入需求后开始生成

这轮码道具体做了什么

不是复述通用 AI 能力,而是它在这次项目里的实际动作:

  • 先探测空闲端口,过程中发现沙箱里的 PYTHONHOME / PYTHONPATH 环境变量被污染,于是先 unset 再用干净的 python3 重新探测。
  • mkdir -p /workspace/morse-converter 创建项目,把编码表、双向转换和 Web Audio 播放全部写进单文件 index.html
  • 最后落在 3003 端口起服务并自检,给出内部访问地址。

代码亮点

以下是 index.html 里值得关注的设计思路和实现细节。

1. 中文不建大表:Unicode 码点转数字摩斯

英文直接查 MORSE 表,中文这种表外字符则取字符的 Unicode 码点,把每一位数字映射成数字摩斯后拼接。这样方向可逆,不需要维护一张巨大中文字表:

function textToMorse(text) {
    if (!text) return "";
    const out = [];
    for (const ch of text) {
      if (ch === " ") { out.push("/"); continue; }
      const up = ch.toUpperCase();
      if (MORSE[up]) { out.push(MORSE[up]); continue; }
      // 非 ASCII / 表外字符:用 Unicode 码点的每一位数字转数字摩斯后直接拼接
      const code = ch.codePointAt(0);
      const digits = String(code).split("");
      const m = digits.map(d => MORSE[d]).join("");
      out.push(m);
    }
    return out.join(" ");
}

2. 反向译码:先把「数字摩斯组」拼回码点

译码时如果一段长度能被 5 整除,就尝试每 5 位一组译成一个数字,再拼成 Unicode 码点还原汉字;只有每段都是合法数字摩斯且码点 >= 32 才算数,否则回退到普通表查询:

if (u.length % 5 === 0) {
    let digits = "", ok = true;
    for (let j = 0; j < u.length; j += 5) {
      const five = u.substr(j, 5);
      const d = REVERSE[five];
      if (d === undefined || !/^[0-9]$/.test(d)) { ok = false; break; }
      digits += d;
    }
    if (ok && digits.length >= 2) {
      const code = parseInt(digits, 10);
      if (code >= 32) { out.push(String.fromCodePoint(code)); continue; }
    }
}

3. 全角 / 半角横线先归一

用户粘贴的摩斯码经常混用全角减号 ,译码前先用 normDash 统一成半角 -,避免「一样的码」被当成两套:

function normDash(s){ return s.replace(//g,"-"); }

直接下载试玩

本次生成的项目就是单文件 index.html,没有第三方依赖,把文件保存到本地后双击用浏览器打开即可运行。源码同步到公开 Demo Park 仓库:

总结

摩斯电码转换器把中英双向转换压进一个页面:英文直接查表,中文用 Unicode 码点转数字摩斯做到可逆,译码时按 5 位一组重组码点,normDash 先把全角横线归一;Web Audio 负责出声,速度和音调都能调。整个过程没有第三方依赖,纯前端跑通。后续可以再加 WPM 训练模式、摩斯码练习出题,或者导出 .wav 音频。

如果还没用过码道,可以免费开通体验版:https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。