阿杰 ✅ 我整理了一份标准的 摩斯密码对照表,包含 字母、数字、常见符号。
📖 摩斯密码对照表
字母 (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
已退出程序,再见!
发表回复