码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-16 18:19:38      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

摩尔斯电码,在早期的"生产斗争"生活中,扮演了很重要的角色,作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久生命。摩尔斯电码在海事通讯中被作为国际标准一直使用到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

 

  

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

标签:

原文地址:http://www.cnblogs.com/yang-csharp/p/4508174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!