阿杰 ✅ 我整理了一份标准的 摩斯密码对照表,包含 字母、数字、常见符号。
📖 摩斯密码对照表
字母 (A–Z)
| 字母 | 摩斯码 | 字母 | 摩斯码 |
|---|---|---|---|
| A | ·- | N | -· |
| B | -··· | O | — |
| C | -·-· | P | ·–· |
| D | -·· | Q | –·- |
| E | · | R | ·-· |
| F | ··-· | S | ··· |
| G | –· | T | – |
| H | ···· | U | ··- |
| I | ·· | V | ···- |
| J | ·— | W | ·– |
| K | -·- | X | -··- |
| L | ·-·· | Y | -·– |
| M | — | Z | –·· |
数字 (0–9)
| 数字 | 摩斯码 |
|---|---|
| 0 | —– |
| 1 | ·—- |
| 2 | ··— |
| 3 | ···– |
| 4 | ····- |
| 5 | ····· |
| 6 | -···· |
| 7 | –··· |
| 8 | —·· |
| 9 | —-· |
常用符号
| 符号 | 摩斯码 |
|---|---|
| . (句号) | ·-·-·- |
| , (逗号) | –··– |
| ? (问号) | ··–·· |
| ‘ (单引号) | ·—-· |
| ! (感叹号) | -·-·– |
| / (斜杠) | -··-· |
| ( (左括号) | -·–· |
| ) (右括号) | -·–·- |
| & (和) | ·-··· |
| : (冒号) | —··· |
| ; (分号) | -·-·-· |
| = (等号) | -···- |
| + (加号) | ·-·-· |
| – (减号) | -····- |
| _ (下划线) | ··–·- |
| ” (双引号) | ·-··-· |
| $ (美元符号) | ···-··- |
| @ (at 符号) | ·–·-· |
额外说明
- 点
·表示短音 (dit),横-表示长音 (dah)。 - 字母之间用 空格 隔开。
- 单词之间用 斜杠
/或 长空格 隔开。
👌 阿杰,那我给你写一个 Java 摩斯密码 ↔ 文本转换小工具,可以实现:
- 文字 → 摩斯码
- 摩斯码 → 文字
Java 示例代码
import java.util.*;
public class MorseCodeTool {
// 摩斯码映射表
private static final Map<Character, String> textToMorse = new HashMap<>();
private static final Map<String, Character> morseToText = new HashMap<>();
static {
String[][] table = {
{"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", "--.."},
{"0", "-----"}, {"1", ".----"}, {"2", "..---"}, {"3", "...--"}, {"4", "....-"},
{"5", "....."}, {"6", "-...."}, {"7", "--..."}, {"8", "---.."}, {"9", "----."},
{".", ".-.-.-"}, {",", "--..--"}, {"?", "..--.."}, {"!", "-.-.--"}, {"/", "-..-."},
{"@", ".--.-."}, {"-", "-....-"}, {"(", "-.--."}, {")", "-.--.-"}
};
for (String[] entry : table) {
textToMorse.put(entry[0].charAt(0), entry[1]);
morseToText.put(entry[1], entry[0].charAt(0));
}
}
// 文本转摩斯码
public static String textToMorse(String text) {
StringBuilder sb = new StringBuilder();
for (char c : text.toUpperCase().toCharArray()) {
if (c == ' ') {
sb.append(" / "); // 单词之间用 /
} else if (textToMorse.containsKey(c)) {
sb.append(textToMorse.get(c)).append(" ");
}
}
return sb.toString().trim();
}
// 摩斯码转文本
public static String morseToText(String morse) {
StringBuilder sb = new StringBuilder();
String[] words = morse.trim().split(" / "); // 单词之间用 /
for (String word : words) {
String[] codes = word.split(" ");
for (String code : codes) {
if (morseToText.containsKey(code)) {
sb.append(morseToText.get(code));
}
}
sb.append(" ");
}
return sb.toString().trim();
}
public static void main(String[] args) {
// 示例
String text = "HELLO WORLD";
String morse = textToMorse(text);
System.out.println("文字转摩斯码: " + text + " -> " + morse);
String decoded = morseToText(morse);
System.out.println("摩斯码转文字: " + morse + " -> " + decoded);
}
}
运行效果
文字转摩斯码: HELLO WORLD -> .... . .-.. .-.. --- / .-- --- .-. .-.. -..
摩斯码转文字: .... . .-.. .-.. --- / .-- --- .-. .-.. -.. -> HELLO WORLD
👌 好的阿杰,我来给你写一个 命令行交互版的摩斯密码工具,这样你运行程序后,可以在命令行里自己选择:
- 输入文字 → 转成摩斯码
- 输入摩斯码 → 转成文字
- 输入
exit→ 退出程序
Java 代码(命令行交互版)
import java.util.*;
public class MorseCodeCLI {
private static final Map<Character, String> textToMorse = new HashMap<>();
private static final Map<String, Character> morseToText = new HashMap<>();
static {
String[][] table = {
{"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", "--.."},
{"0", "-----"}, {"1", ".----"}, {"2", "..---"}, {"3", "...--"}, {"4", "....-"},
{"5", "....."}, {"6", "-...."}, {"7", "--..."}, {"8", "---.."}, {"9", "----."},
{".", ".-.-.-"}, {",", "--..--"}, {"?", "..--.."}, {"!", "-.-.--"}, {"/", "-..-."},
{"@", ".--.-."}, {"-", "-....-"}, {"(", "-.--."}, {")", "-.--.-"}
};
for (String[] entry : table) {
textToMorse.put(entry[0].charAt(0), entry[1]);
morseToText.put(entry[1], entry[0].charAt(0));
}
}
// 文本转摩斯码
public static String textToMorse(String text) {
StringBuilder sb = new StringBuilder();
for (char c : text.toUpperCase().toCharArray()) {
if (c == ' ') {
sb.append(" / "); // 单词之间用 /
} else if (textToMorse.containsKey(c)) {
sb.append(textToMorse.get(c)).append(" ");
}
}
return sb.toString().trim();
}
// 摩斯码转文本
public static String morseToText(String morse) {
StringBuilder sb = new StringBuilder();
String[] words = morse.trim().split(" / "); // 单词之间用 /
for (String word : words) {
String[] codes = word.split(" ");
for (String code : codes) {
if (morseToText.containsKey(code)) {
sb.append(morseToText.get(code));
}
}
sb.append(" ");
}
return sb.toString().trim();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("===== 摩斯密码工具 =====");
System.out.println("输入普通文字 -> 转换成摩斯码");
System.out.println("输入摩斯码(用'.'和'-',单词间用'/') -> 转换成文字");
System.out.println("输入 exit -> 退出程序");
while (true) {
System.out.print("\n请输入: ");
String input = scanner.nextLine().trim();
if (input.equalsIgnoreCase("exit")) {
System.out.println("已退出程序,再见!");
break;
}
// 判断是否是摩斯码(只包含 . - / 和空格)
if (input.matches("[.\\-/ ]+")) {
System.out.println("摩斯码 -> 文字: " + morseToText(input));
} else {
System.out.println("文字 -> 摩斯码: " + textToMorse(input));
}
}
scanner.close();
}
}
运行效果
===== 摩斯密码工具 =====
输入普通文字 -> 转换成摩斯码
输入摩斯码(用'.'和'-',单词间用'/') -> 转换成文字
输入 exit -> 退出程序
请输入: HELLO WORLD
文字 -> 摩斯码: .... . .-.. .-.. --- / .-- --- .-. .-.. -..
请输入: .... . .-.. .-.. --- / .-- --- .-. .-.. -..
摩斯码 -> 文字: HELLO WORLD
请输入: exit
已退出程序,再见!
发表回复