摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔与萨缪尔·摩尔斯在1836年发明。

摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用0和1两种状态的二进制代码,它的代码包括五种:

点(·):1

划(-):111

字符内部停顿(在字符内的那些点和划之间):0

短停顿(在字符之间):000

中等停顿(在单词之间):0000000

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(1)

有两种“符号”用来表示字符:点(·)和划(-),或叫“滴”(Dit)和“答”(Dah)。点的长度决定了发报的速度,并且被当作发报时间参考。下面是时间控制的图示:

-- --- ·-· ··· · / -·-· --- -·· ·

M O R S E (空格) C O D E

这里,“-”表示划,“·”表示点。这是上面消息的准确发报时间(=表示有信号,.代表无信号,每个为一个点的长度):

===.===...===.===.===...=.===.=...=.=.=...=.......===.=.===.=...===.===.===...===.=.=...=

^ ^ ^ ^ ^

| 劃 点 | 单词间隔

点劃间隔 字符间隔

划一般是三个点的长度;点划之间的间隔是一个点的长度;字符之间的间隔是三个点的长度;单词之间的间隔是七个点的长度。

初学者往往被教导发送点划间隔短小、短而快的字符,并且在符号和单词之间夸大间隔时间。比较起来,这种方式更加容易学会。

熟悉摩尔斯码的人之间经常像这样说话或拼写(其中,“长音 / Dah”是发“awe”的音):

-- --- ·-· ··· · / -·-· --- -·· ·

DahDah DahDahDah DiDahDit DiDiDit Dit, DahDiDahDit DahDahDah DahDiDi Di.

以上介绍均来自维基百科

下面我们用代码来实现这个转换的功能:

新建一个map集合,将摩斯电码的规则添加进去(具体的参照上面的摩斯电码规则图),部分截图如下:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(2)

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(3)

然后创建这个实例化对象,并对其进行初始化,方便验证输入无误:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(4)

加密方法如下:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(5)

解密方法如下:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(6)

这样我们就功能实现完毕,只需要调用即可。测试:

输入中文:我喜欢勒布朗.詹姆斯

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(7)

转换失败,因为摩斯电码不支持中文。也是上面的初始化验证方法起效果。

输入英文: I love lebron James

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(8)

这个转换成功。

下面实现中文和二进制的互转功能,这个比较简单,直接展示代码部分了:

二进制转换成中文:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(9)

中文转换成二进制:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(10)

测试如下:

阿斯克码如何转换成2进制(关于中文转换成摩斯电码)(11)

测试成功。

话说人得有多无聊才会研究这个啊,哈哈。

,