解码7位GSM [英] decode 7-bit GSM
本文介绍了解码7位GSM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我找到了这个 关于如何将ascii数据编码为7位GSM字符集的文章,我将如何再次解码7位GSM字符(将其反向转换为ascii)?
I found this post on how to encode ascii data to 7-bit GSM character set, how would I decode 7-bit GSM character again (reverse it back to ascii)?
推荐答案
对于Python2:
import binascii
gsm = ("@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞ\x1bÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?"
"¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑÜ`¿abcdefghijklmnopqrstuvwxyzäöñüà")
ext = ("````````````````````^```````````````````{}`````\\````````````[~]`"
"|````````````````````````````````````€``````````````````````````")
def gsm_encode(plaintext):
result = []
for c in plaintext:
idx = gsm.find(c)
if idx != -1:
result.append(chr(idx))
continue
idx = ext.find(c)
if idx != -1:
result.append(chr(27) + chr(idx))
return ''.join(result).encode('hex')
def gsm_decode(hexstr):
res = hexstr.decode('hex')
res = iter(res)
result = []
for c in res:
if c == chr(27):
c = next(res)
result.append(ext[ord(c)])
else:
result.append(gsm[ord(c)])
return ''.join(result)
code = gsm_encode("Hello World {}")
print(code)
# 64868d8d903a7390938d853a1b281b29
print(gsm_decode(code))
# Hello World {}
这篇关于解码7位GSM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文