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)))