모스 부호(모스 부호라고도 번역됨, 모스 code)는 ON/OFF되는 신호코드로, 서로 다른 배열을 통해 서로 다른 영문자와 숫자, 문장부호를 표현합니다. 1837년 미국의 알프레드 위어(Alfred Weir)가 발명했습니다. 모스 부호는 디지털 통신의 초기 형태이지만 0과 1의 두 가지 상태만 사용하는 현대 이진 코드와는 다릅니다. 점, 대시, 점과 대시 사이의 일시 정지, 각 문자 사이의 짧은 일시 정지(점과 대시 사이), 각 단어 사이의 중간 일시 정지, 문장 사이의 긴 일시 정지.
영어/숫자 등 ASCII 인코딩 127 구분 기호의 내용만 사용할 수 있으며
은 유니코드를 지원하지 않습니다. 하지만 유니코드를 지원하도록 일부를 직접 수정할 수 있습니다
샘플 코드:
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换成明文形式