モールス信号 (モールス信号、モールスとも訳される) コード)は、オンとオフの信号コードで、異なる英文字、数字、句読点を異なる配列で表現します。 1837年にアメリカ人のアルフレッド・ウィアーによって発明されました。 モールス信号はデジタル通信の初期の形式ですが、0 と 1 の 2 つの状態のみを使用する現代のバイナリ コードとは異なります。そのコードには次の 5 つのタイプがあります。 点、ダッシュ、点とダッシュの間の休止、各文字の間 (点とダッシュの間) の短い休止、各単語の間の中程度の休止、および文間の長い休止。
英語/数字などの ASCII エンコードの 127 区切り文字の内容のみが使用可能であり、
Unicode はサポートされていないことに注意してください。しかし、Unicode をサポートするためにその一部を自分で変更することができます
サンプルコード:
public static class MorseCode // 摩尔斯电码(星际穿越) { private static volatile string[,] CodeTable = { {"A",".-"}, {"B","-..."}, {"C","-.-."}, {"D","-.."}, {"E","."}, {"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","----."}, {".",".-.-.-"}, {",","--..--"}, {":","---..."}, {"?","..--.."}, {"\'",".----."}, {"-","-....-"}, {"/","-..-."}, {"(","-.--."}, {")","-.--.-"}, {"\"",".-..-."}, {"=","-...-"}, {"+",".-.-."}, {"*","-..-"}, {"@",".--.-."}, {"{UNDERSTOOD}","...-."}, {"{ERROR}","........"}, {"{INVITATION TO TRANSMIT}","-.-"}, {"{WAIT}",".-..."}, {"{END OF WORK}","...-.-"}, {"{STARTING SIGNAL}","-.-.-"}, {" ","\u2423"} }; public static string Enc(string str) { int i; string ret = string.Empty; if (str != null && (str = str.ToUpper()).Length > 0) foreach (char asc in str) if ((i = Find(asc.ToString(), 0)) > -1) ret += " " + CodeTable[i, 1]; return ret; } public static string Dec(string str) { int i; string[] splits; string ret = string.Empty; if (str != null && (splits = str.Split(' ')).Length > 0) { foreach (string split in splits) if ((i = Find(split, 1)) > -1) ret += CodeTable[i, 0]; return ret; } return "{#}"; } private static int Find(string str, int cols) { int i = 0, len = CodeTable.Length / 2; // len / rank while (i < len) { if (CodeTable[i, cols] == str) return i; i++; }; return -1; } }
コードを使用:
string encry = MorseCode.Enc("China"); // 把China换成摩尔斯电码 string decry = MorseCode.Dec(encry); //把encry换成明文形式