關於中文轉換成摩斯電碼,二進位的代碼實現步驟

2021-01-08 十二說IT

摩爾斯電碼(英語: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

這個轉換成功。

下面實現中文和二進位的互轉功能,這個比較簡單,直接展示代碼部分了:

二進位轉換成中文:

中文轉換成二進位:

測試如下:

測試成功。

話說人得有多無聊才會研究這個啊,哈哈。

相關焦點

  • C語言常用的進位轉換工具函數盤點!爺爺再也不用擔心我不會進位...
    01 字符串轉十六進位 代碼實現: 03 字符串轉十進位 (1)若帶負號,代碼實現:
  • 二進位、十進位和十六進位
    二進位就是逢二進位,它的一個位只有兩個值:0 和 1,但它卻是實現計算機系統的最基本的理論基礎,計算機(包括單片機)晶片是基於成萬上億個的開關管組合而成的,他們每一個都只能有開和關兩種狀態,再難找出第三個狀態了(不要辯解半開半關這個狀態,它是不穩定態,是極力避免的),所以他們只能對應於二進位的 1 和 0 兩個值,而沒有 2、3、4.,理解二進位對於理解計算機的本質很有幫助。
  • 玩轉摩爾斯電碼:自製摩爾斯電碼音頻解析器
    我最早接觸的摩爾斯電碼是SOS(··· — — — ···),是小時候看一本兒童讀物中提到某輪船沉船時發出的求救信號。後來在各種軍事題材的影視作品中又頻繁接觸到了摩爾斯電碼,當時就被它的神秘而著迷。寫本文的主要目的是想設計一套系統,幫助聽報員解放雙耳,實現對音頻的摩爾斯電碼自動解碼。
  • 數理轉換,互為質數與進位轉換
    先說一下進位:十進位裡逢十進一,1/2就是0.5;2進位裡逢二進一,1/2就是0.1;4進位裡逢4進一,1/2就是0.2;6進位裡逢6進一,1/2就是0.3。那在3進位裡呢?注意:十進位小數是常用的小數進位,但小數進位不一定是十進位。如17/32採用32進位,則小數表示為0.17。有限小數的本質是分母因式分解後的幾組因數,必須都是進位數的因數,比如1/2,1/4,1/5,1/8,1/10,1/16,1/20,它們之所以是10進位的有限小數,就是因為它們的分母最終只能分解為2和5這兩組進位因數。20進位的進位因數仍是2和5。
  • 大學數學家用二進位代碼和外星人的面孔對麥田怪圈進行解碼
    大學數學家用二進位代碼和外星人的面孔對麥田怪圈進行解碼Arjun Walia阿爾瓊·瓦利亞
  • 二進位中 1 的個數(劍指 Offer 題解Java版)
    二進位中 1 的個數題目連結題目描述思路一. 利用Integer類的bitCount()二.二進位中 1 的個數題目連結NowCoder題目描述任意給定一個32位無符號整數n,求n的二進位表示中1的個數,比如n = 5(0101)時,返回2,n = 15(1111)時,返回4這也是一道比較經典的題目了
  • keil c51如何實現2進位操作
    ##的作用是連接字符的作用 例如:0x##11110000##L 替代後0x11110000 將8個十進位數轉換為十六進位,L表示長整型數32bits3.uchar a;a=Bin(10101010);// a=0xaa 即可以實現位操作,某些編譯器不支持二進位直接操作,如0B10101010
  • 真有小夥伴不知道浮點數如何轉二進位嗎?
    」當時寫那篇文章的時候,我原以為大家對於小數轉二進位的換算早已瞭然於胸,所以也就沒有給出具體的換算過程。結果文章發出來後,私信裡一票小夥伴反饋說,文中那些小數轉二進位的例子到底是怎麼換算出來的,最好詳解一下。
  • excel如何把阿拉伯數字轉換成中文大寫
    我們在日常辦公中使用excel表格,會遇到希望顯示在表格上的數字是中文大寫的形式,特別是會計工作人員,那麼怎樣用excel實現這一功能呢在excel表格中選中需要轉換的阿拉伯數字所在的單元格,按住Ctrl +1,會彈出設置單元格對話框。
  • 巧輸中文大寫金額
    圖 5‑15代開發票證明→ 解決方案利用「格式域開關(\*)」,將小寫數字轉換為大寫中文數字→ 操作方法※使用「格式域開關(\*)」錄入大寫中文數字※步驟1 將光標定位到需要錄入大寫中文數字處
  • 「諜戰」中的摩爾斯電碼
    例如:在經典諜戰電影《風聲》中,老鬼把求救信號縫在衣服上傳遞出去,用的方式就是摩爾斯電碼。而後來的《聽風者》中,梁朝偉更加出神入化般,不但破譯電碼,而且能夠分析出對方所處的環境跟職業。那麼,摩斯電碼究竟是什麼,真的那麼高深莫測嗎?
  • 摩爾斯電碼>>...---... 轉!轉!轉!
  • 最高機密:神秘的摩爾斯電碼
    謎底「I LOVE YOU TOO」   網友"片羿天使"在下面網友的跟貼催促下,晚上20點02分第207樓再次出現,並且道出了摩斯密碼的答案,也給出了解答的步驟,此時這則帖子的跟貼已經到了第7 頁。摩爾斯電碼(又譯為摩斯電碼)是一種時通時斷的信號代碼,這種信號代碼通過不同的排列順序來表達不同的英文字母、數字和標點符號等。
  • 二進位安全學習規劃指南
    基礎課程學習核心基礎課程——計算機的工作原理體系結構https://www.ece.cmu.edu/~ece447/s15/doku.phpLabs: implement a MIPS CPU using Verilog機器指令與彙編語言指令的解碼、執行內存管理CPU的設計與實現
  • Netflix 是如何實現 Android與iOS 共用一套代碼?
    您只需在必要時編寫特定於平臺的代碼即可,例如實現原生UI或者使用特定於平臺的 API 時。 Kotlin Multiplatform 與以往各類知名跨平臺移動開發技術有所區別。其它技術主要以抽象化或者全面取代平臺特定開發方法作為主要訴求,並致力於替換掉一切特定平臺應用開發方興未艾。
  • 使用Swing製作進位轉化器
    進位轉化1.各進位之間的轉化在計算機科學中,常用的進位有二進位、八進位、十進位和十六進位。在開發過程中使用比較多的是二進位和十進位的。如果涉及一些字節編碼操作,十六進位也會用得到,甚至可能會用到三十二進位。1.1 十進位向其它進位轉化以正常的十進位數為標準,如果將一個十進位數轉化成二進位數。可以使用除法取餘的方式進行,在下圖中我們用二進位和八進位進行舉例: