|
发表于 2018-4-12 14:06:47
|
显示全部楼层
- MORSE_CODE = {'.-...': '&', '--..--': ',', '....-': '4', '.....': '5', '...---...': 'SOS', '-...': 'B',
- '-..-': 'X', '.-.': 'R', '.--': 'W', '..---': '2', '.-': 'A', '..': 'I', '..-.': 'F',
- '.': 'E', '.-..': 'L', '...': 'S', '..-': 'U', '..--..': '?', '.----': '1', '-.-': 'K',
- '-..': 'D', '-....': '6', '-...-': '=', '---': 'O', '.--.': 'P', '.-.-.-': '.', '--': 'M',
- '-.': 'N', '....': 'H', '.----.': "'", '...-': 'V', '--...': '7', '-.-.-.': ';', '-....-': '-',
- '..--.-': '_', '-.--.-': ')', '-.-.--': '!', '--.': 'G', '--.-': 'Q', '--..': 'Z', '-..-.': '/',
- '.-.-.': '+', '-.-.': 'C', '---...': ':', '-.--': 'Y', '-': 'T', '.--.-.': '@', '...-..-': ',
- '.---': 'J', '-----': '0', '----.': '9', '.-..-.': '"', '-.--.': '(', '---..': '8', '...--': '3'}
- def decodeBits(bits):
- for t in range(1,len(bits)): #第一步:用于找出信息转换中的频率t(我的理解是找出最少的连续0的个数)
- if '1'+'0'*t+'1' in bits:
- break
- #第二步:根据频率,把bits转成Morse码
- return bits.replace('0'*7*t,' '*3).replace('1'*3*t,'-').replace('0'*3*t,' ').replace('1'*t,'.').replace('0'*t,'')
- def decodeMorse(morseCode): #解析morse码,转成字符
- res=''
- for ms in morseCode.strip().split(' '):
- if ms=='':
- res+=' '
- else:
- res+=MORSE_CODE[ms]
- return res.replace(' ',' ') #双空格改为单空格
- testbits='1100110011001100000011000000111111001100111111001111110000000000000011001111110011111100111111000000110011001111110000001111110011001100000011'
- print('接收到的字符串:',testbits)
- print('转换成Morse:',decodeBits(testbits))
- print('破译成可识别字符:',decodeMorse(decodeBits(testbits)))
复制代码 |
|