阿杰 ✅ 我整理了一份标准的 摩斯密码对照表,包含 字母、数字、常见符号


📖 摩斯密码对照表

字母 (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-·–
MZ–··

数字 (0–9)

数字摩斯码
0—–
1·—-
2··—
3···–
4····-
5·····
6-····
7–···
8—··
9—-·

常用符号

符号摩斯码
. (句号)·-·-·-
, (逗号)–··–
? (问号)··–··
‘ (单引号)·—-·
! (感叹号)-·-·–
/ (斜杠)-··-·
( (左括号)-·–·
) (右括号)-·–·-
& (和)·-···
: (冒号)—···
; (分号)-·-·-·
= (等号)-···-
+ (加号)·-·-·
– (减号)-····-
_ (下划线)··–·-
” (双引号)·-··-·
$ (美元符号)···-··-
@ (at 符号)·–·-·

额外说明

  • 点 · 表示短音 (dit),横 - 表示长音 (dah)。
  • 字母之间用 空格 隔开。
  • 单词之间用 斜杠 / 或 长空格 隔开。

👌 阿杰,那我给你写一个 Java 摩斯密码 ↔ 文本转换小工具,可以实现:

  1. 文字 → 摩斯码
  2. 摩斯码 → 文字

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

👌 好的阿杰,我来给你写一个 命令行交互版的摩斯密码工具,这样你运行程序后,可以在命令行里自己选择:

  1. 输入文字 → 转成摩斯码
  2. 输入摩斯码 → 转成文字
  3. 输入 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
已退出程序,再见!