转载

摩尔斯电码(Morse Code)Csharp实现

摩尔斯电码 ,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命。摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年。不过随着科技的发展,最终还是倒在了历史的车轮下(PS:等等,为何这么熟悉??观众:好一片根正苗红的*文啊,啊啊啊啊),1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”。

任何关于Morse code可拓展的咨询,请移步维基百科: 摩尔斯电码

说明:本文中Csharp实现Morse code如无特殊说明,仅实现了 字母 长码版数字 ,不包括 标点符号非英语字符特殊字符 。(ps:实际上也可以通过下文所实现的方式去实现,不过是不是有点"呆",谁有更好的办法??!!)

在做事之前,不妨感受一下 滴滴答答的声音

参考国际摩尔斯电码数字字母对应表:

摩尔斯电码(Morse Code)Csharp实现

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

正文到此结束
Loading...