摩斯密码加解密

article/2025/8/20 4:51:48

摩斯密码又叫莫尔斯电码,摩斯电码
著名的SOS救难信号用莫尔斯电码表示为:...---...滴滴滴嗒嗒嗒滴滴滴

一、间隔时间

  • 滴,1t,用.表示
  • 嗒,3t,用-表示
  • 滴嗒间,1t,不用表示
  • 字符间,3t,用空格表示
  • 字间,7t,也就是单词间,用/表示

二、莫斯编码字符集

三、莫斯编码映射

莫斯编码是一种变长编码,哈夫曼编码也是一种变长编码。莫斯编码不是哈夫曼编码,如果字符之间没有空白,会产生二义性,而哈夫曼编码不会产生二义性
695653-20170216151235597-1395232275.png

四、特殊符号

莫斯编码不是哈夫曼编码,字符之间没有3t,而直接混在一起可能会产生歧义。
但是为了提高发送效率,人们规定下面这些字符之间没有3t,而是几个字符连在一起
这是一些有特殊意义的点划组合。它们由二个字母的摩尔斯电码连成一个使用,这样可以省去正常时把它们做为两个字母发送所必须的中间间隔时间。

AR:·—·—·(停止,消息结束)
AS:·—···(等待)
K:—·—(邀请发射信号)(一般跟随AR,表示“该你了”)
SK:···—·—(终止,联络结束)
BT:—···—(分隔符)
···—·(我将重新发送最后一个单词)
·· ··(同样)
········(错误)

五、常用语

常用语是指一些缩写,跟现在的网络用语有点像。
常用语是用一个单词来表示一个句子,而上面的特殊用语是用一个特殊字符表示一个句子。

六、代码实现

# -*- coding:utf-8 -*-
__author__  = 'kiven'
__date__    = '2014-06-04'
__version__ = '1.0.0'
# 摩斯密码表(自己可定义加密方式...)
CODE = {# 26个字母'A': '.-',     'B': '-...',   'C': '-.-.','D': '-..',    'E': '.',      'F': '..-.','G': '--.',    'H': '....',   'I': '..','J': '.---',   'K': '-.-',    'L': '.-..','M': '--',     'N': '-.',     'O': '---','P': '.--.',   'Q': '--.-',   'R': '.-.','S': '...',    'T': '-',      'U': '..-','V': '...-',   'W': '.--',    'X': '-..-','Y': '-.--',   'Z': '--..',# 10个数字'0': '-----',  '1': '.----',  '2': '..---','3': '...--',  '4': '....-',  '5': '.....','6': '-....',  '7': '--...',  '8': '---..','9': '----.',# 16个标点符号',': '--..--', '.': '.-.-.-', ':': '---...', ';': '-.-.-.','?': '..--..', '=': '-...-',  "'": '.----.', '/': '-..-.','!': '-.-.--', '-': '-....-', '_': '..--.-', '(': '-.--.',')': '-.--.-', '$': '...-..-','&': '. . . .','@': '.--.-.'# 下面还可自行添加密码字典}
# print CODE
# 反转字典(作为解密摩斯密码的字典)
UNCODE = dict(map(lambda t:(t[1],t[0]),CODE.items()))
# print UNCODE'''
将字符串转换成摩斯密码
params:需要转换的字符串
'''
def stringToMorseAlphabet(msg):# message用于保存加密结果message = ''# msg = raw_input('Message:')# msg = 'this is test'print msg + '   ///对应的摩斯密码为///',for c in msg:if c == ' ':message += ' 'else:# upper():将所有小写字母转换成大写字母message += CODE[c.upper()] + ' 'return message'''
将摩斯密码还原成字符串
params:需要还原的摩斯码
'''
def morseAlphabetToString(morseCode):# message用于保存解密结果message = ''list = morseCode.split(' ')# print listprint morseCode + '   ///对应的明文为///',for s in list:if s == '':message += ' 'else:message += UNCODE[s]return message# Test
# print stringToMorseAlphabet('I love you')
print morseAlphabetToString(stringToMorseAlphabet('what the fuck!'))

转载于:https://www.cnblogs.com/weiyinfu/p/6405798.html


http://chatgpt.dhexx.cn/article/kUYyOAdE.shtml

相关文章

A : 摩斯密码

题目描述: 摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。为了简单问题,去除所有的标点符号。 现在给你一段摩斯密码&#xf…

摩斯密码

摩斯密码,很多人肯定都听说过它的大名。但是多数人不了解它,认为这是个神一样的领域,难以企及。 但是我要告诉你,你如果想用这个密码日常聊天有些难,但是学两手来秀两手还是可以的。 比如说电影中经常出现的一个摩斯…

摩斯电码/密码入门简介

摩尔斯:是我们生活中非常常见的一种密码形式,例如电报就用的是这个哦 什么是摩尔斯电码: 摩斯电码是一种用于交流的系统,由塞缪尔•莫尔斯发明,它依靠一系列的点和划来传递编码信息。虽然,最初它被设计为…

摩尔斯电码(摩斯电码)

摩尔斯电码 简介电码对照表应用互译工具特殊符号常见缩写交流示例中文与摩斯电码 简介 摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837…

没错,我是高端吃瓜玩家(搞懂摩斯密码)

前言 大家好,我是bigsai大赛哥,好久不见,甚是想念。 行了,咱们步入正轨,已经进入2022,在2021这一年,很多人的快乐消遣是在吃瓜快乐中度过的,有的作为主动吃瓜群众第一手掌握消息&…

摩斯密码是什么?

摩斯密码是什么? 摩斯密码(摩尔斯电码)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号;它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之…

为什么很多人吐槽谭浩强的C语言程序设计?

这个观点在网络上已经论战了很长时间,出现这种情况还是历史遗留问题,老谭出的C语言教材几乎是国内的第一版,由于中英翻译问题或者对编程文化理解的差异性导致出来的书多多少少存在一些纰漏。不能只是记住其缺点,老谭书最主要在那个…

谭浩强老师C语言第五版第六章(上)

第3、7题难在了数学思路上&#xff08;不会或理解不了私信&#xff09; 仅代表个人看法 如有错误请指正 题目1&#xff1a;用筛选法求100 之内的素数。 代码如下&#xff1a; #include <stdio.h> #include <math.h> int main() { int i, j, n, a[101]; …

第1章 引论 - 数据结构与算法分析 c语言描述

前言&#xff1a;此类型的文章皆为本人在阅读此书后给出的关于此书的理解&#xff0c;以及知识的梳理复习。若对文章有不解之处&#xff0c;或者文章有错欢迎评论区留言。 1.1 本书讨论的内容 有一组N个数&#xff0c;要找出其中第k个最大者&#xff0c;我们称之为选择问题(se…

谭浩强老师C语言第五版第五章(上)

本文涉及字符宽度&#xff0c;暂不做讲解&#xff0c;不懂留言 仅代表个人看法 如有侵权请说明 题目1&#xff1a;请画出例 5.6 中给出的3个程序段的流程图。 程序如下1、 #include <stdio.h> int main() { int i, j, n 0; for (i 1; i < 4; i) …

谭浩强C语言程序设计(1-3章代码学习)

谭浩强C语言程序设计 参考书 C语言学习笔记记录&#xff0c;学习为主&#xff0c;新手小白入门 我所用的C语言在线编译器&#xff1a;lightly在线编译工具 可新建工程 谭浩强C语言程序设计书籍所包含的代码示例加注释说明如下&#xff1a; /*笔记记录者&#xff1a;xy;学习教…

谭浩强C语言第九章知识总结

第九章 shyu 结构体&#xff1a;用户自定义的数据类型 如&#xff1a;在描述一个学生的相关信息时&#xff0c;需要整型变量来记录学号&#xff0c;字符数组来记录名字&#xff0c;等等&#xff0c;物品们可以通过定义结构体改变变量的数据类型&#xff0c;把这些信息整成一…

谭浩强C语言第七章知识总结

第七章 定义函数 定义没有参数的函数&#xff0c; 类型名 函数名&#xff08;&#xff09; 类型名 函数名&#xff08;void&#xff09; { { 函数体 或 函数体 } …

C语言 谭浩强 题目 -第六章

文章目录 笔记字符数组字符数组输出字符串处理函数输入字符串的函数 gets&#xff08;&#xff09;字符串连接函数--strcat字符串赋值函数--strcpy字符串比较函数---strcmp测字符串长度的函数--strlen转换为大小写的函数 EG 1EG 2EG 3 排序 冒泡排序 不用函数EG 4EG 5EG 6EG 7E…

C语言 谭浩强 题目 -第八章

文章目录 笔记通过指针引用数组用数组名作函数参数以变量名和数组名作为函数参数的比较 例题【例8.2】【例8.6】【例8.3】【例 8.4】【例 8.5】【例 8.6】【例8.7】【例8.8】【例8.9】【例 8.10】选择法起泡法 【例 8.11】【例 8.12】【例 8.13】【例8.30】 用指向数组的指针作…

C语言 谭浩强 题目 -第七章

文章目录 笔记函数参数函数调用返回值函数的嵌套函数的递归数组作为函数参数多维数组名作函数参数局部变量和全局变量全局变量 变量的存储方式和生存期自动变量(auto变量)static静态局部变量寄存器变量(register变量) 全局变量在一个文件内扩展外部变量的作用域将外部变量的作用…

【C语言】谭浩强

1.分支选择结构 #include<stdio.h> int main(){ char grade; scanf(“%c”,&grade); printf(“Your score:”); switch(grade) { case’A’:printf(“85~100\n”);break; case’B’:printf(“70~84\n”);break; case’C’:printf(“60~69\n”);break; case’D’:prin…

C语言 谭浩强第五版 课后习题解答

第一章 1.什么是程序?什么是程序设计? 程序&#xff1a;就是一组能识别和执行的指令&#xff0c;每一条指令使计算机执行特定的操作 程序设计&#xff1a;是指从确定任务到得到结果、写出文档的全过程 2.为什么需要计算机语言?高级语言有哪些特点? 为什么需要计算机语言&am…

谭浩强c语言课后习题(更新中)

1.第三章 纯代公式题 #include<stdio.h>int main() {float p1.07; //第一年倍数for (int i 1; i < 10; i) //只用循环了9次&#xff0c;因为是从第一年开始{p p * 1.07;}printf("%f%%%",p*100); }第2题也是代进公式即可 其实也是代给出的公式&#xff0…

C语言学习笔记(C程序设计-谭浩强)

入门&#xff1a; 计算机程序&#xff1a; 一组计算机能够识别和执行的指令。计算机的每一个操作都是根据指令进行的&#xff0c;计算机的一切操作都是由程序控制的 计算机指令&#xff1a;指挥机器工作的指示和命令。 指令包含操作码和操作数&#xff0c;操作码决定要完成的…