摩爾斯電碼(英語:Morse code)是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、數字和標點符號。是由美國人艾爾菲德·維爾與薩繆爾·摩爾斯在1836年發明。
摩爾斯電碼是一種早期的數位化通信形式,但是它不同於現代只使用0和1兩種狀態的二進位代碼,它的代碼包括五種:
點(·):1
劃(-):111
字符內部停頓(在字符內的那些點和劃之間):0
短停頓(在字符之間):000
中等停頓(在單詞之間):0000000
有兩種「符號」用來表示字符:點(·)和劃(-),或叫「滴」(Dit)和「答」(Dah)。點的長度決定了發報的速度,並且被當作發報時間參考。下面是時間控制的圖示:
-- --- ·-· ··· · / -·-· --- -·· ·
M O R S E (空格) C O D E
這裡,「-」表示劃,「·」表示點。這是上面消息的準確發報時間(=表示有信號,.代表無信號,每個為一個點的長度):
===.===...===.===.===...=.===.=...=.=.=...=.......===.=.===.=...===.===.===...===.=.=...=
^ ^ ^ ^ ^
| 劃 點 | 單詞間隔
點劃間隔 字符間隔
劃一般是三個點的長度;點劃之間的間隔是一個點的長度;字符之間的間隔是三個點的長度;單詞之間的間隔是七個點的長度。
初學者往往被教導發送點劃間隔短小、短而快的字符,並且在符號和單詞之間誇大間隔時間。比較起來,這種方式更加容易學會。
熟悉摩爾斯碼的人之間經常像這樣說話或拼寫(其中,「長音 / Dah」是發「awe」的音):
-- --- ·-· ··· · / -·-· --- -·· ·
DahDah DahDahDah DiDahDit DiDiDit Dit, DahDiDahDit DahDahDah DahDiDi Di.
以上介紹均來自維基百科
下面我們用代碼來實現這個轉換的功能:
新建一個map集合,將摩斯電碼的規則添加進去(具體的參照上面的摩斯電碼規則圖),部分截圖如下:
然後創建這個實例化對象,並對其進行初始化,方便驗證輸入無誤:
加密方法如下:
解密方法如下:
這樣我們就功能實現完畢,只需要調用即可。測試:
輸入中文:我喜歡勒布朗.詹姆斯
轉換失敗,因為摩斯電碼不支持中文。也是上面的初始化驗證方法起效果。
輸入英文: I love lebron James
這個轉換成功。
下面實現中文和二進位的互轉功能,這個比較簡單,直接展示代碼部分了:
二進位轉換成中文:
中文轉換成二進位:
測試如下:
測試成功。
話說人得有多無聊才會研究這個啊,哈哈。