摩尔斯电码 ,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命。摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年。不过随着科技的发展,最终还是倒在了历史的车轮下(PS:等等,为何这么熟悉??观众:好一片根正苗红的*文啊,啊啊啊啊),1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”。
任何关于Morse code可拓展的咨询,请移步维基百科: 摩尔斯电码
说明:本文中Csharp实现Morse code如无特殊说明,仅实现了 字母 和 长码版数字 ,不包括 标点符号 , 非英语字符 和 特殊字符 。(ps:实际上也可以通过下文所实现的方式去实现,不过是不是有点"呆",谁有更好的办法??!!)
在做事之前,不妨感受一下 滴滴答答的声音
参考国际摩尔斯电码数字字母对应表:
Morse code集合:
/// <summary> /// 组织mores集合 ///我使用了键值对,Dictionary, HashTable都是可以的 /// </summary> Dictionary<char, String> morseCode = new Dictionary<char, String>() { {'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。本文的例子中增加标识符另作它用,请忽略。
/// <summary> /// 加密 /// </summary> /// <param name="value">命令</param> /// <returns>密文</returns> 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; }
解密:
/// <summary> /// 解密 /// </summary> /// <param name="code">密文</param> /// <returns>命令</returns> 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