一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

阅读之前,大家请先看一行符号,看看大家能不能猜出这段符号所代表的含义:

“--. --- --- -.. .--- --- -...”

相信能看出这段符号含义的人还是占少数,没关系,通过阅读久见菌的这篇文章保证让你能看懂这是什么意思。

摩尔斯电码的发明‍

上面这一串符号就是使用摩尔斯电码打出来的英语单词,摩尔斯电码是由美国的画家、通讯学家、电报之父:塞缪尔·摩尔斯于1839年发明的电报信号传输方式。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

塞缪尔·摩尔斯

摩尔斯发明摩尔斯电码的契机是在他的一次远航之中,在一艘名叫“萨利号”的船上,我们的主人公摩尔斯,正在受到晕船的困扰,汹涌的风暴打的“萨利号”左摇右晃,摩尔斯在与船长聊天的时候提出了一个问题:“如果在海面上,遇到这种大型风浪,船应该怎么办?”

船长无奈地说道:如果遇到这种情况,我们只能发出求助信向周围的船只或者附近岛屿求助。”这么大的风浪该用什么方式把消息传出去呢?用信鸽吗?还是什么方式?莫尔斯疑惑地向船长提问道。

“只能听天由命了,伟大的哥伦布在遇到这种事情的时候,就只能将求助信放到椰壳里,把希望寄托这渺茫的命运之中,我们这种人能怎么办呢?”

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

 

说者无心,听者有意,摩尔斯也意识到需要一种方式,将船与船、船与陆地之间相连。

无独有偶,就在这趟旅行之中,摩尔斯结识了来自波士顿的医生兼电学博士杰克逊,杰克逊给他讲解了许多有关电学的知识,让莫尔斯认识到了电学的伟大,摩尔斯感觉自己打开了一片全新的天地。摩尔斯想到了电的传播速度这么快,那如果将它运用到船与船之间的通信上,岂不是能帮助船上的被困人员发出求援信号,增加他们存活的几率?

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

图为当时的发电装置

于是摩尔斯就开始了他的电报发明之路。

他在查询资料的时候发现他的这个设想并不是首创,早在1753年,英国电学家摩尔逊就提出了这个设想,摩尔逊研发的电报机是用26根电线和接收器组成的,26根电线代表着26个英文字母。电线接受电流之后,会吸引电线周围的纸片,每一个纸片上都有自己的字母,电报机凭借这种方式进行信息的传播。

但是这个电报机有一个致命的缺陷就是它的体积太大了,而且电报机的电源问题也很不好解决,这种电报机在当时没有实际的使用价值。

通过这个摩尔逊电报机的失败,摩尔斯意识到如果想将这种电报机投入到日常的使用中,必须要精简它的体积。摩尔逊的电报机,它的体积之所以大,是因为它必须要有26根电线来代指26个英文字母,如果能将代表26个字母的电线结构进行简化,就会极大地精简电报机的体积。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

 

于是莫尔斯想到一个办法,用点、横、空白三种符号代替26个英文字母,创造一种专门用于电报发送的一种符号,并将他命名为摩尔斯电码。

摩尔斯在1837年9月4日制作出了第一部电报机。摩尔斯电报机可能大家都见过,它经常出现在一些谍战剧的剧情中。发报器是由电键和一组电池组成的,按下电键就会有电流通过,按的时间短就代表点,按的时间长就代表横线。

负责接收的收报器,则是由一根电磁铁为主体制作成的,当有电流通过的时候,电磁铁就会驱动它控制的笔在纸上记录下点或者横线,然后再根据摩尔斯电码的规则转译成需要的语言。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

图为发报器

摩尔斯电报机推出之后,经过几代的更迭,被广泛应用于各种场景,邮政通信、航海旅行、战争通讯,各种场景都有摩尔斯电报机的身影,随着时代的发展,通信技术也在不断进步,摩尔斯电报机也逐渐退出了历史舞台。但是他所创造的摩尔斯电码却在人类通讯历史上留下了浓墨重彩的一笔。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

图为摩尔斯电报机

如何使用摩尔斯电码‍

虽然随着通讯方式的进化,摩尔斯电码逐渐地淡离了人类的视野。各国的军队也会采用更为先进的加密方式来进行通讯,但这种方式在某些特定场合也能发挥关键的作用。

在越南战争期间,美国海军的飞行员丹顿,他的飞机被越军击毁之后,丹顿也被俘虏了,出于政治宣传的目的,北越政府要求丹顿在电视节目中承认自己的战争罪行。丹顿为了活命只能配合北越政府的行动,可是进行电视宣传的同时,丹顿趁着这个机会,用眨眼的方式发送摩尔斯电码,传递出T O R T U R E(虐待)的单词,在被俘期间,丹顿也常和战友用眨眼或咳嗽来进行摩尔斯电码交流。对于普通人来讲,学会了这种摩斯密码,简直就可以对普通人造成降维打击。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

 

向大家介绍了这么多摩尔斯密码,那我们普通人能不能学会摩尔斯密码呢?其实摩尔斯密码的学习很简单,只要记住这个表格,你也可以使用莫尔斯电码。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

 

通过这个表格我们就可以将我们的话语,加密成摩尔斯电码,在通讯过程中,我们会看到一些电报员带着耳机,这就是电报员在接听摩尔斯电码。划用嗒(dah)来表示,点用嘀(dit)来表示。在发报的时候,划的长度大概是点长度的三倍,点划之间用一个点的长度作为间隔,每打出来一个字母,就用三个点的长度作为间隔。每打出一个单词则用七个点的长度作为间隔。在当时电报员就通过这个方式来进行发报。现在这种发报方式基本就存在小范围的爱好者之间了。

一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”

 

如果我这么讲你还是听不懂的话,其实还有一种很简单的方式,就是你在网上搜索,摩尔斯电码转换器,就可以将自己想说的话转化成摩尔斯电码。

原文:https://www.toutiao.com/i6940915312707748360/

 

如果你学会了摩尔斯电码你就可以看懂我在文章开头写下的摩尔斯电码,如果你没听懂那就让我为你解密。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 以下是用C语言实现摩尔斯密码转换器的示例代码: ``` #include <stdio.h> #include <string.h> void convertToMorse(char ch); int main() { char message[100]; int i; printf("请输入要转换的文本:\n"); fgets(message, 100, stdin); for (i = 0; i < strlen(message); i++) { convertToMorse(message[i]); } return 0; } void convertToMorse(char ch) { switch (ch) { case 'a': case 'A': printf(".- "); break; case 'b': case 'B': printf("-... "); break; case 'c': case 'C': printf("-.-. "); break; case 'd': case 'D': printf("-.. "); break; case 'e': case 'E': printf(". "); break; case 'f': case 'F': printf("..-. "); break; case 'g': case 'G': printf("--. "); break; case 'h': case 'H': printf(".... "); break; case 'i': case 'I': printf(".. "); break; case 'j': case 'J': printf(".--- "); break; case 'k': case 'K': printf("-.- "); break; case 'l': case 'L': printf(".-.. "); break; case 'm': case 'M': printf("-- "); break; case 'n': case 'N': printf("-. "); break; case 'o': case 'O': printf("--- "); break; case 'p': case 'P': printf(".--. "); break; case 'q': case 'Q': printf("--.- "); break; case 'r': case 'R': printf(".-. "); break; case 's': case 'S': printf("... "); break; case 't': case 'T': printf("- "); break; case 'u': case 'U': printf("..- "); break; case 'v': case 'V': printf("...- "); break; case 'w': case 'W': printf(".-- "); break; case 'x': case 'X': printf("-..- "); break; case 'y': case 'Y': printf("-.-- "); break; case 'z': case 'Z': printf("--.. "); break; case ' ': printf(" "); break; default: break; } } ``` 这个程序可以将用户输入的文本转换成摩尔斯电码,并在控制台中输出。用户可以输入任意长度的文本,程序会自动将其转换成摩尔斯电码。 ### 回答2: 摩斯密码是一种将字母、数字和标点符号转换为点(.)和线(-)的密码系统。要用C语言编写一个摩斯密码转换器,我们可以采取以下步骤: 1. 首先,我们需要定义一个摩斯密码表,其中包含字母、数字和标点符号与其对应的摩斯密码。 2. 接下来,用户将输入要转换的字符串,可以是字母、数字和标点符号的组合。 3. 我们使用循环来遍历输入的字符串。对于每个字符,我们需要找到其对应的摩斯密码,并打印或输出到屏幕上。 4. 我们可以使用switch语句来检查字符,并在找到对应的摩斯密码后输出。 5. 输出的摩斯密码可以用点(.)和线(-)表示,我们可以使用printf函数来打印这些字符。 6. 最后,我们可以加入一些用户友好的功能,如提示用户输入要转换的字符串,并在输出摩斯密码后询问用户是否继续转换。 下面是一个简单的C语言代码示例,用于将摩斯密码转换为字符串: ```c #include <stdio.h> #include <string.h> void convertToMorseCode(char character) { switch(character) { case 'A': case 'a': printf(".- "); break; case 'B': case 'b': printf("-... "); break; // 其他字母和符号的转换 default: printf(" "); break; } } int main() { char input[100]; int i; printf("请输入要转换的字符串:"); fgets(input, 100, stdin); for(i = 0; i < strlen(input); i++) { convertToMorseCode(input[i]); } return 0; } ``` 这只是一个简单的示例,只包括了几个字母的转换。你可以在`convertToMorseCode`函数中补充完整的摩斯密码表,并在switch语句中处理其他字符。同时,你还可以根据需要进行扩展和优化。 ### 回答3: 摩斯密码是一种将字母、数字、标点符号等转换成一系列短信号和长信号的编码方式,通过不同长度的信号来区分不同字符。下面是一个用C语言编写的摩斯密码转换器的示例代码: ```c #include <stdio.h> #include <string.h> void convertToMorse(char *string) { int i, j; char *morseAlphabet[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; char *morseNumber[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}; char *morseSymbol[] = {".-.-.-", "--..--", "..--..", "-.-.--", "-..-.", "-.--.", "-.--.-", ".-...", "---...", "-.-.-.", "-...-", ".-.-.", "-....-", "..--.-", ".-..-.", ".--.-."}; for (i = 0; i < strlen(string); i++) { if (string[i] >= 'A' && string[i] <= 'Z') { j = string[i] - 'A'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= 'a' && string[i] <= 'z') { j = string[i] - 'a'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= '0' && string[i] <= '9') { j = string[i] - '0'; printf("%s ", morseNumber[j]); } else if (string[i] == ' ') { printf(" / "); } else { for (j = 0; j < sizeof(morseSymbol) / sizeof(morseSymbol[0]); j++) { if (string[i] == morseSymbol[j][0]) { printf("%s ", morseSymbol[j]); break; } } } } printf("\n"); } int main() { char inputString[100]; printf("请输入要转换成摩斯密码的字符串:"); fgets(inputString, sizeof(inputString), stdin); inputString[strlen(inputString) - 1] = '\0'; // 去掉换行符 printf("转换后的摩斯密码为:"); convertToMorse(inputString); return 0; } ``` 这个摩斯密码转换器使用了3个字符数组`morseAlphabet`、`morseNumber`和`morseSymbol`来存储对应的摩斯密码编码。在`convertToMorse`函数中,通过遍历输入的字符串,根据字符的不同范围,找到对应的摩斯密码编码,并打印输出到控制台。在`main`函数中,首先接收用户输入的字符串,然后调用`convertToMorse`函数来进行转换,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口Linux

众筹植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值