摩比尔密码码

莫尔斯码表_摩尔斯电码_摩斯密码
栏目: 常用资料 来源:  
  莫尔斯码表
  在推理小说中,密码是非常常见的东西,其中经常使用的、也是最为简单的就是摩斯密码了,这里提供一些相关资料,希望有所帮助。
  电报通信的语言是由电码符号组成的。电报通信最早是由美国的摩尔斯在 1844年发明的,所以电码符号也被叫做摩尔斯电码(Morse code)。电码
符号由两种基本信号和不同的间隔时间组成:短促的点信号& .&,读& 的 &(Di);保持一定时间的长信号&─&,读&答 ─&(Da)。
  在早期战时电报通信中应用广泛??相信大家在很多战争片中都看到过吧?通讯员对着发报机按个不停,其实是根据一定的规则将发报机的&撞针&与&针板&(这两个都是形象用词)进行接触,从而产生或长或短的电信号。接受方的发报机会将这种电信号翻译成为生意信号比如上面的DIDA。而操作员根据声音转换成密码图形,对照密码表在翻译成文字。而发报者所进行的就是反操作。由于一定程度上属于一种密码,所以如果不知道摩尔斯电码表的人是不能明白其中的意思的。
  摩尔斯电码定义了包括:英文字母A-Z(无大小写区分)十进制数字0-9,以及&?&&/&&()&&-&&.&很适合英语的通信。至今仍有很多地方在使用。在业余无线电通信中,他是全世界运用统一的电码。下面列出的是基本码表:
━ .━ .
.━ ━ ━
.━ ━ .
━ ━ .━
━ .━ ━
━ ━ ..
━ ━ ━ ━ ━
.━ ━ ━ ━
..━ ━ ━
...━ ━
....━
.....
━ ....
━ ━ ...
━ ━ ━ ..
━ ━ ━ ━ .
.━ .━ .━
━ ━ ━ ...
━ ━ ..━ ━
━ .━ .━ .
..━ ━ ..
━ ...━
.━ ━ ━ ━ .
━ ..━ .
━ .━ .━ ━
━ ....━
..━ ━ .━
.━ ..━ .
━ .━ ━ .
━ .━ ━ .━
...━ ..━
.━ ━ .━ .
非英语字符
.━ ━ .━
━ ━ ━ ━
━ .━ ..
..━ ━ .
..━ ..
.━ ..━
━ ━ .━ .
━ .━ ━ .
.━ ━ ━ .
━ ━ .━ ━
━ ━ ━ .
...━ .
.━ ━ ..
.━ .━ .
.━ ...
...━ .━
━ ...━
特殊符号(同一符号)
这是一些有特殊意义的点划组合。它们由二个字母的摩尔斯电码连成一个使用,这样可以省去正常时把它们做为两个字母发送所必须的中间间隔时间。
AR:&&&&&(停止,消息结束)
AS:&&&&&(等待)
K:&&&(邀请发射信号)(一般跟随AR,表示&该你了&)
SK:&&&&&&(终止,联络结束)
BT:&&&&&(分隔符)
特殊符号(非同一符号)
&&&&&(我将重新发送最后一个单词)
&& &&(同样)
&&&&&&&&(错误)
  莫尔斯与电报机
  在电被用于传播之前,人类的远距离通信可追溯到远古时代的狼烟报警,烽火台堪称最早的通信装置;人类历史走到距今一千多年的时候,马匹和驿使开始担负起远距离通信的重任。我国历代王朝遍设驿站,各级驿差快马加鞭,传送文书,通信速度以马速或马的脚力计算,以天为时间单位;十七世纪,英国海军推行旗语,但是由于缺乏有效的信号机体系,海陆之间的信息传送仍然困难重重,直到十八世纪末法国政府建立了信号机体系,才使这个问题得到一定程度的解决;十九世纪初叶,人类史上取得了一系列的科学进展,美国人富尔敦造成了第一艘汽船,英国工程师史蒂芬孙发明蒸汽机车,6600马力的&东方巨轮&下水等,远距离通信发展拜上述运输工具之所赐,也得到了同步发展,这时的速度单位&马力&已经意味着人类通信时间单位可以用小时计量。
  早在莫尔斯之前,就有人想过用电来进行通信,最早的电报机应该是有着26根电线的机器。1753年,当时对电的研究尚只停留在静电上,一位叫摩尔逊的人,利用静电感应的原理,用代表26个英文字母的26根导线通电后进行信息传输,但这种机器需要的导线太多,设置庞杂,并且静电传应的距离有限,因此这项发明没有得到推广。1804年,西班牙的萨瓦将许多代表不同字母和符号的金属线浸在盐水中,他的电报接收装置是装有盐水的玻璃管,当电流通过时,盐水被电解,产生出小气泡,他根据这些气泡辨识出字母,从而接收到远处传送来的信息。但萨瓦的电报接收机可靠性很差,不具实用性。后来,俄国科学家许林格设计了一种只用8根电线的编码式电报机,并且取得试验上的成功,但由于需要的导线还是太多,依然难以达到实用之功效。
  上述这些幼稚时期的电报接收装置虽然没有得到最终的应用和推广,但它们为后进者提供了试验基础,随着电磁学理论的不断完善,电学的进一步发展,一根导线的电报机在莫尔斯的千呼万唤中诞生了。
  莫尔斯:上帝创造了何等奇迹!
  1843年,塞缪尔&莫尔斯用国会赞助的3万美元建起了从华盛顿到巴尔的摩之间长达64公里的电报线路,翌年5月,他在华盛顿国会大厦最高法院会议厅里,用他从1937年便发明出来并不断完善的电报机,向巴尔的摩发送了世界上的第一封电报,电文内容是《圣经》中的一句话:上帝啊,你创造了何等的奇迹!
  自此之后, 这种&闪电式的传播线路&迅速发展,形成了巨大的通讯网络。 电报本身不是大众传媒, 但它为大众传播提供了快速有效的通讯手段,
而作为现代重要传播媒介的通讯社, 也是在电报技术发明之后才出现和发展起来的。
自助者天助。上帝没有创造奇迹,但上帝很公平。他没有使莫尔斯循着四十年的人生轨迹继续走向绘画世界的辉煌--尽管他已是时人公认的一流画家,但让莫尔斯最终实现他的发明梦想,在科学界获得了一个席位,从此开启电子通信时代的新纪元。
  画家改行
  1832年的秋天,美国画家塞缪尔&莫尔斯从法国乘船返回美国。同船医生杰克逊为了解闷,向大家讲述了电磁铁原理:当导线通电后,铁块就产生吸引力。线圈的圈数越多,或通过的电流愈大,吸引力也就愈强;电流一中断,磁性就消失。莫尔斯问医生:&电流通过导线的速度有多快?&杰克逊告诉他?速度非常惊人,不论导线有多长,电流几乎一瞬间就能通过。&(《电报史话》,第4页,季卜枚著,战士出版社,1982年版)
  莫尔斯联想起亲眼所见的法国信号机系统,它每次只能凭视力所及将信息传递到数英里之外,如果电流可以快速通过无论多长的导线的话,那么完全可以用它来进行远距离信息传递。这个想法从此改变了时年41岁的画家以后的生活,他开始恶补物理知识,钻研电磁学,功夫不负有心人,1836年,他琢磨出著名的莫尔斯电码,并于次年研制出世界上第一台传送&点&&划&符号的机器,取名为&电报机&。
  莫尔斯电码
  在著名电影《尼罗河上的惨案》中,大侦探波洛的房间里出现了一条眼镜蛇,情急之下,他用手指敲敲墙壁,隔壁的雷斯上校听到声音,知道波洛面临险境,立即杖剑过来,刺死了眼镜蛇,波洛死里逃生。使波洛免于一死的正是莫尔斯电码,他通过墙壁传送给雷斯的声音&嘀嘀嘀,嗒嗒嗒,嘀嘀嘀&是电码中SOS的求救信号。
  莫尔斯电码是电信史上最早的编码。1936年,冥思苦想的莫尔斯终于悟出:&电流只要停止片刻,就会出现火花;没有火花出现是另一种符号;没有火花的时间长度又是一种符号。这三种符号如果组合起来代表数字和字母,就可以通过导线来传递文字了。&
(&电报机的发明者--莫尔斯&,英杰传,史海勾沉,SCITOM首页, HYPERLINK &.cn&
于是他用&点&(0&1秒的通电时间)、&划&(0&3秒的通电时间)和&间隔&(断开电路)来表示各种字符,包括26个字母和数字,它的声音是&嘀&、&嗒&和无声,(&大幕将启--莫尔斯和电报&,中国科普博览-电信博物馆,.cn)
这就是至今还在沿用的&莫尔斯电码&。
  莫尔斯在设计电码时,并非随心所欲,而是大量研究了报刊上的常用字的出现频率。对于出现频率最高的三个字母&E&&T&&A&,用最简单的电码组合,这三个字母的电码符号分别为&&&&--&&&-&;对于不常用的字母,如&J&&Q&&X&&Y&&Z&等字母,其组合便比较复杂。莫尔斯在考虑到了各个字符点划组合上的区别之外,还对点划的长短和间隔的大小作了严格的时间上的规定。一个&划&相当于三个&点&的时间长度,点与点,点与划,划与划之间的间隔为一个&点&的时间,字符之间相隔三个&点&的时间,字之间的间隔为五个&点&的时间,由此构成了莫尔斯电码的旋律。只有严格遵守这些时间比例,才能做到收发准确。
  莫尔斯电报机
  莫尔斯电报机分为莫尔斯人工电报机和莫尔斯自动电报机(简称莫尔斯快机)。莫尔斯人工电报机是一种最简单的电报机,由三个部分组成:电键、印码机构和纸条盘。发报主要利用电键拍发电报信号,按键的时间短就代表点,按键的时间长(?点&的三倍长)就代表&划&,手抬起来不按电键就代表间隔。收报则通过听声音的长短的办法来区分&点&&划&,既可进行人工抄收,也可用纸条记录器把不同长短的符号记录下来,后者比人工抄收更为可靠,可作为书面根据,便于查对。这种最早的电报机由于完全依赖于人的操作,其通报速率是很低的,即便是最熟练的报务员,每分钟也只能收发20组字左右,但莫尔斯人工电报机设备简单,维修方便,工作性能稳定,因此沿用至今,特别是在野外勘探或进行野战时,很大程度上依赖它来进行通信联系。
莫尔斯快机包括键盘凿孔机、自动发报机和波纹收报机等设备,这些设备大都是用小型电动机带动的。使用时发方报务员先用键盘凿孔机在凿孔纸条上凿出莫尔斯符号孔,然后把凿好孔的纸条送入自动发报机发报,收方则用波纹收报机收报。由于发报和收报的步骤都用机器代替了人工,其效率较之于先前的人工收报机大为提高。但它在收报中不能直接印出字来,因此劳动生产率仍然较低,转报也不太方便,现在已经被淘汰。
05-17 05-16 03-30 01-01 01-01 01-01 01-01 01-01摩尔斯电码(又译为摩斯电码,Morse
code)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。它由美国人艾尔菲德·维尔发明,当时他正在协助Samuel
Morse进行摩尔斯电报机的发明(1835年)。在今天,国际摩尔斯电码依然被使用着。此在线工具可以在线进行摩斯电码的转换,无需下载和安装,网页版的转换器在网页上直接进行。
&&&摩尔斯电码转换
英文字母:
&生成摩斯代码的分隔方式:空格分隔
单斜杠/分隔
摩斯电码:(格式要求:可用空格或单斜杠/来分隔摩斯电码,但只可用一种,不可混用)
在英文字母输入区域输入英文字母,单击转换为摩尔斯,将英文翻译为摩尔斯代码。在摩斯电码区域输入摩斯电码,单击转换为英文字母,即可以将莫尔斯密码转换为英文单词。使用该工具,可以实现摩斯密码的在线翻译,传递你的神秘信息。摩斯代码默认采用空格分隔,为了在网页或文件中显示方便,许多摩斯采用单斜杠/进行分隔,在你单击转换为摩尔斯按钮前进行选择。下面是摩尔斯电码表。
.━ ━ ━
━ ━ ..
━ ━ ━ ━ ━
.━ ━ ━ ━
..━ ━ ━
...━ ━
....━
.....
━....
━ ━...
━ ━ ━ ..
━ ━ ━ ━ .
.━.━ .━
━ ━ ━...
━ ━..━ ━
━.━ .━.
..━ ━..
━ ...━
.━ ━ ━ ━ .
━..━ .
━.━ .━ ━
━....━
..━ ━.━
.━ ..━.
━ .━ ━ .
━.━ ━.━
...━ ..━
.━ ━.━ .
.━.━.
Since 2004&&&摩斯密码转换-JAVA版 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 16时,
虽说没一丁点技术含量另分享两个在线转换:http://mathsking.net/morse.htm&&/
代码片段(1)
1.&[代码][Java]代码&&&&
import java.util.HashM
import java.util.M
import mons.lang3.StringU
* @author kute
* @date 日
public class MorseConventer {
* clear text to morse code
* @param text
public static String toMorse(String text) {
String morseCode = "";
if(!StringUtils.isEmpty(text)) {
text = text.toUpperCase();
String[] textArray = text.split(SPACE_IN_WORD);
for(String word : textArray) {
morseCode += wordToMorseCode(word) + SPACE_BETWEEN_WORD;
return morseCode.substring(0, morseCode.lastIndexOf(SPACE_BETWEEN_WORD));
* morse code to clear text
* @param morseCode
public static String fromMorse(String morseCode) {
String text = "";
if(!StringUtils.isEmpty(morseCode)) {
String[] codeArray = morseCode.split(SPACE_BETWEEN_WORD);
for(String wordCode : codeArray) {
text += wordFromMorseCode(wordCode) + SPACE_IN_WORD;
return text.substring(0, text.lastIndexOf(SPACE_IN_WORD)).toLowerCase();
private static final String SPACE_IN_WORD = " ";
private static final String SPACE_BETWEEN_WORD = "
private static String wordToMorseCode(String word) {
String wordMorseCode = "";
String[] wordArray = word.split("");
for(String letter : wordArray) {
if(!StringUtils.isEmpty(letter)) {
wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
return wordMorseCode.substring(0, wordMorseCode.lastIndexOf(SPACE_IN_WORD));
private static String wordFromMorseCode(String wordMorseCode) {
String word = "";
String[] codeArray = wordMorseCode.split(SPACE_IN_WORD);
for(String code : codeArray) {
for(Map.Entry&String, String& entry : MORSE_CODE.entrySet()) {
if(entry.getValue().equals(code)) {
word += entry.getKey();
private static final Map&String, String& MORSE_CODE = new HashMap&String, String&(){
private static final long serialVersionUID = -4210328L;
put("A", ".-");
put("B", "-...");
put("C", "-.-.");
put("D", "-..");
put("E", ".");
put("F", "..-.");
put("G", "--.");
put("H", "....");
put("I", "..");
put("J", ".---");
put("K", "-.-");
put("L", ".-..");
put("M", "--");
put("N", "-.");
put("O", "---");
put("P", ".--.");
put("Q", "--.-");
put("R", ".-.");
put("S", "...");
put("T", "-");
put("U", "..-");
put("V", "...-");
put("W", ".--");
put("X", "-..-");
put("Y", "-.--");
put("Z", "--..");
put("1", ".----");
put("2", "..---");
put("3", "...--");
put("4", "....-");
put("5", ".....");
put("6", "-....");
put("7", "--...");
put("8", "---..");
put("9", "----.");
put("0", "-----");
put("?", "..--..");
put("/", "-..-.");
put("-", "-...-");
put(".", ".-.-.-");
put("()", "-.--.-");
开源中国-程序员在线工具:
相关的代码(843)
结论:运行结果会出现 null
建议改进:将&wordToMorseCode() 中的 for 循环改成如下:
for(int i=1;i&wordArray.i++){
& & & & String letter = wordArray[i];
& & & & & & wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
// & & & & & &System.out.println(letter+"|"+MORSE_CODE.get(letter));
wordArray数组下标从 1 开始!!
2楼:库特 发表于
引用来自“musicme”的评论结论:运行结果会出现 null
建议改进:将&wordToMorseCode() 中的 for 循环改成如下:
for(int i=1;i&wordArray.i++){
& & & & String letter = wordArray[i];
& & & & & & wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
// & & & & & &System.out.println(letter+"|"+MORSE_CODE.get(letter));
wordArray数组下标从 1 开始!!
确实会出现null,但你说的这个修改不太明白,指点下,谢谢
3楼:WilliamHoward 发表于
引用来自“musicme”的评论结论:运行结果会出现 null
建议改进:将&wordToMorseCode() 中的 for 循环改成如下:
for(int i=1;i&wordArray.i++){
& & & & String letter = wordArray[i];
& & & & & & wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
// & & & & & &System.out.println(letter+"|"+MORSE_CODE.get(letter));
wordArray数组下标从 1 开始!!
引用来自“库特”的评论确实会出现null,但你说的这个修改不太明白,指点下,谢谢因为出现null的情况一般是wordArray数组的第一个元素即下标为0的元素,所以musicme的意思是从第二个元素开始即下标为1的元素开始
4楼:WilliamHoward 发表于
我建议在循环中加入if判断即可,代码如下:
&for(String letter : wordArray) {
& & & & & & if(letter!=null && !"".equals(letter)){
& & & & & & & & wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
& & & & & & }
5楼:库特 发表于
引用来自“WilliamHoward”的评论我建议在循环中加入if判断即可,代码如下:
&for(String letter : wordArray) {
& & & & & & if(letter!=null && !"".equals(letter)){
& & & & & & & & wordMorseCode += MORSE_CODE.get(letter) + SPACE_IN_WORD;
& & & & & & }
请参考!好,thks
6楼:湾仔十三香 发表于
morseCode.split(SPACE_BETWEEN_WORD)& 这段代码是什么作用,为了排除某些特殊情况么,求指教
开源从代码分享开始
库特的其它代码有趣的摩斯密码
大家都在看
BBC:成吉思汗
BBC:平行宇宙
BBC地球系列
吃昆虫拯救世界?
BBC:英国最高法院
与鳄鱼一起洗澡
解开“冰人”之谜
接连遭遇诡异事件
瞬间吃掉猎物
胸口出现离奇伤口
竟是汉族丫鬟?
百年而不腐
老男孩续写迷幻后青春
新晋网红神兽饕餮花式刷存在感
嗜血战士绝地重生
饭饭之交,无性不欢
魏三对战走私团伙爆笑来袭
爱丽丝终极决战丧失军团
异地恋者慎入
深夜食堂抚慰疲惫灵魂
米拉深陷恐怖“梦中梦”
绝境求生 非凡冒险
汤姆和妮可大尺度之作
中年大叔爱上未成年少女
美好莫过于年轻时的疯狂
蝙蝠侠与罪恶小丑生死决战

我要回帖

更多关于 密码 的文章

 

随机推荐