,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命。摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年。不过随着科技的发展,最终还是倒在了历史的车轮下(PS:等等,为何这么熟悉??观众:好一片根正苗红的*文啊,啊啊啊啊),1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”。
任何关于Morse code可拓展的咨询,请移步维基百科:
说明:本文中Csharp实现Morse code如无特殊说明,仅实现了字母和长码版数字,不包括标点符号,非英语字符和特殊字符。(ps:实际上也可以通过下文所实现的方式去实现,不过是不是有点"呆",谁有更好的办法??!!)
在做事之前,不妨感受一下
参考国际摩尔斯电码数字字母对应表:
Morse code集合:
////// 组织mores集合 ///我使用了键值对,Dictionary, HashTable都是可以的 /// DictionarymorseCode = new Dictionary () { { 'a' , ".-"},{ 'b' , "-..."},{ 'c' , "-.-."}, //alpha { 'd' , "-.."},{ 'e' , "."},{ 'f' , "..-."}, { 'g' , "--."},{ 'h' , "...."},{ 'i' , ".."}, { 'j' , ".---"},{ 'k' , "-.-"},{ 'l' , ".-.."}, { 'm' , "--"},{ 'n' , "-."},{ 'o' , "---"}, { 'p' , ".--."},{ 'q' , "--.-"},{ 'r' , ".-."}, { 's' , "..."},{ 't' , "-"},{ 'u' , "..-"}, { 'v' , "...-"},{ 'w' , ".--"},{ 'x' , "-..-"}, { 'y' , "-.--"},{ 'z' , "--.."}, //Numbers { '0' , "-----"},{ '1' , ".----"},{ '2' , "..----"},{ '3' , "...--"}, { '4' , "....-"},{ '5' , "....."},{ '6' , "-...."},{ '7' , "--..."}, { '8' , "---.."},{ '9' , "----."}, };
加密:
加密的过程就是把已知的或者说要发送的转为Morse code。本文的例子中增加标识符另作它用,请忽略。
////// 加密 /// /// 命令 ///密文 public string WordsTransferToMoresCodes(string value) { string values = ""; if (value.Length < 0) { return values; } foreach (char words in value.ToCharArray()) //拆分字符串为字节数组 { foreach (var dic in morseCode) { if (dic.Key == words) { values += dic.Value +"|"; //"|"为标识码 } } } return values; }
解密:
////// 解密 /// /// 密文 ///命令 public string MoresCodeTransferToWords(string code) { string keys = ""; if (code.Length < 0) { return keys; } foreach (string codes in code.Split('|')) //拆分密文 { foreach (var dic in morseCode) //遍历mores集合 { if (dic.Value == codes) { keys += dic.Key ; } } } return keys; }
事情进行到这里,基本可以说是杀青了,当然,正如前文所讲,实现的部分不包括标点符号,非英语字符和特殊字符,各位可各抒己见。
好,就这样,放学。
TymonYang May-16 2015