一分钟记住常用的摩尔斯电码
生活随笔
收集整理的這篇文章主要介紹了
一分钟记住常用的摩尔斯电码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:今天刷知乎時看到了個摩爾斯電碼的對照表,感覺還是很好記憶的。練習幾十個字母就差不多了。如下圖:是不是很好記~~
2:在電影星際穿越中男主cooper就是通過鐘表的滴答進行信息傳遞的,還有去年is殺害日本人質時,媒體猜測被害人在遇害時通過眨眼睛對世人說“不要救我,放棄我”。
3:上大圖
4:上大圖
1 /*簡單問題要復雜會,看起來很厲害的樣子,有時候僅僅是打印了一個helloworld而已~~*/
2 class Program
3 {
4 static void Main(string[] args)
5 {
6 Mors.AddCodeData("testkey", "testvalue");
7 var testStr="hello boy";
8 var resultEncode=Mors.Encode(testStr);
9 var resultDecode=Mors.Decode(resultEncode);
10 Console.WriteLine("Encode:" + resultEncode+"
"+"Decode"+resultDecode);
11 Console.ReadLine();
12 }
13 }
14 public static class Mors
15 {
16 private static Dictionary<string, string> unCodeData = new Dictionary<string, string>()
17 {
18 {"a",".-"},{"b","-..."},{"c","-.-."},{"d","-.."},{"e","."},{"f","..-."},{"g","--."},{"h","...."},{"i",".."},{"j",".---"},{"k","-.-"},
19 {"l",".-.."},{"m","--"},{"n","-."},{"o","---"},{"p",".--."},{"q","--.-"},{"r",".-."},{"s","..."},{"t","-"},{"u","..-"},{"v","...-"},
20 {"w",".--"},{"x","-..-"},{"y","-.--"},{"z","--.."},{",","--..--"},{".",".-.-.-"}
21 };
22 private static Dictionary<string, string> codeData = new Dictionary<string, string>()
23 {
24 {".-","a"},{"-...","b"},{"-.-.","c"},{"-..","d"},{".","e"},{"..-.","f"},{"--.","g"},{"....","h"},{"..","i"},{".---","j"},{"-.-","k"},
25 {".-..","l"},{"--","m"},{"-.","n"},{"---","o"},{".--.","p"},{"--.-","q"},{".-.","r"},{"...","s"},{"-","t"},{"..-","u"},{"...-","v"},
26 {".--","w"},{"-..-","x"},{"-.--","y"},{"--..","z"},{"--..--",","},{".-.-.-","."}
27 };
28
29 /// <summary>
30 /// 待編碼數據 key-value => 字母-mors
31 /// </summary>
32 public static Dictionary<string, string> UnCodeData
33 {
34 get{return unCodeData;}
35 private set{}
36 }
37 /// <summary>
38 /// 反編碼數據 key-value => mors-字母
39 /// </summary>
40 public static Dictionary<string, string> CodeData
41 {
42 get{return codeData;}
43 private set{}
44 }
45 /// <summary>
46 /// 添加其他電碼
47 /// </summary>
48 /// <param name="key"></param>
49 /// <param name="value"></param>
50 /// <returns></returns>
51 public static bool AddUncodeData(string key,string value)
52 {
53 if(!UnCodeData.Keys.Contains(key))
54 {
55 UnCodeData.Add(key,value);
56 if(CodeData.Keys.Contains(value))
57 throw new Exception("data error");
58 CodeData.Add(value,key);
59 return true;
60 }
61 return false;
62 }
63 public static bool AddCodeData(string key,string value)
64 {
65 if(!CodeData.Keys.Contains(key))
66 {
67 CodeData.Add(key,value);
68 if(UnCodeData.Keys.Contains(value))
69 throw new Exception("data error");
70 UnCodeData.Add(value,key);
71 return true;
72 }
73 return false;
74 }
75 public static bool RemoveUncodeData(string key)
76 {
77 if(UnCodeData.Keys.Contains(key))
78 {
79 var value=UnCodeData[key];
80 if(codeData.Keys.Contains(value))
81 {
82 UnCodeData.Remove(key);
83 codeData.Remove(value);
84 }
85 return true;
86 }
87 return false;
88 }
89 public static bool RemoveCodeData(string key)
90 {
91 if (CodeData.Keys.Contains(key))
92 {
93 var value = CodeData[key];
94 if (UnCodeData.Keys.Contains(value))
95 {
96 CodeData.Remove(key);
97 UnCodeData.Remove(value);
98 }
99 return true;
100 }
101 return false;
102 }
103 /// <summary>
104 /// 編碼為mors
105 /// </summary>
106 /// <param name="str"></param>
107 /// <returns></returns>
108 public static string Encode(string str)
109 {
110 /// hello word
111 if (str.Length < 0)
112 return string.Empty;
113 var words = Regex.Replace(str.Trim(), @"s+", " ").Split(' ');
114 var result=string.Join("/",words.Select(word=>
115 {
116 return string.Join(" ", word.ToCharArray().Select(letter =>
117 {
118 return UnCodeData[letter.ToString()];
119 }));
120 }));
121 return result;
122 }
123 /// <summary>
124 /// 解碼為mors電碼
125 /// </summary>
126 /// <param name="str"></param>
127 /// <returns></returns>
128 public static string Decode(string str)
129 {
130 //..- ---- .--. .-
131 var words = Regex.Replace(str.Trim(), @"s+", " ").Split('/').Select(word=>word.Trim()).ToArray();
132 var result=string.Join(" ", words.Select(word=>
133 {
134 return string.Join("", word.Split(' ').Select(letter=>
135 {
136 return CodeData[letter.ToString()];
137 }));
138 }));
139 return result;
140 }
141 }
View Code
點贊的伙伴今年都能找到像樓上一樣漂亮的女神~~(我不是來騙贊的~~不信你試試)
總結
以上是生活随笔為你收集整理的一分钟记住常用的摩尔斯电码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9050 端口 linux 进程,win
- 下一篇: linux删除第二次出现的字符,linu