解码7位GSM

joh*_*nes 5 python encode gsm codec

我发现这个职位上如何编码ASCII数据到7位的GSM字符集,我怎么会再次解码7位GSM字符(反向回ASCII)?

noi*_*iam 7

例如:

C7F7FBCC2E03代表'Google'Python
3.4

def gsm7bitdecode(f):
   f = ''.join(["{0:08b}".format(int(f[i:i+2], 16)) for i in range(0, len(f), 2)][::-1])
   return ''.join([chr(int(f[::-1][i:i+7][::-1], 2)) for i in range(0, len(f), 7)])
Run Code Online (Sandbox Code Playgroud)

打印(gsm7bitdecode( 'C7F7FBCC2E03'))

谷歌


unu*_*tbu 2

对于Python2:

\n\n
import binascii\ngsm = ("@\xc2\xa3$\xc2\xa5\xc3\xa8\xc3\xa9\xc3\xb9\xc3\xac\xc3\xb2\xc3\x87\\n\xc3\x98\xc3\xb8\\r\xc3\x85\xc3\xa5\xce\x94_\xce\xa6\xce\x93\xce\x9b\xce\xa9\xce\xa0\xce\xa8\xce\xa3\xce\x98\xce\x9e\\x1b\xc3\x86\xc3\xa6\xc3\x9f\xc3\x89 !\\"#\xc2\xa4%&\'()*+,-./0123456789:;<=>?"\n       "\xc2\xa1ABCDEFGHIJKLMNOPQRSTUVWXYZ\xc3\x84\xc3\x96\xc3\x91\xc3\x9c`\xc2\xbfabcdefghijklmnopqrstuvwxyz\xc3\xa4\xc3\xb6\xc3\xb1\xc3\xbc\xc3\xa0")\next = ("````````````````````^```````````````````{}`````\\\\````````````[~]`"\n       "|````````````````````````````````````\xe2\x82\xac``````````````````````````")\n\ndef gsm_encode(plaintext):\n    result = []\n    for c in plaintext:\n        idx = gsm.find(c)\n        if idx != -1:\n            result.append(chr(idx))\n            continue\n        idx = ext.find(c)\n        if idx != -1:\n            result.append(chr(27) + chr(idx))\n    return \'\'.join(result).encode(\'hex\')\n\ndef gsm_decode(hexstr):\n    res = hexstr.decode(\'hex\')\n    res = iter(res)\n    result = []\n    for c in res:\n        if c == chr(27):\n            c = next(res)\n            result.append(ext[ord(c)])\n        else:\n            result.append(gsm[ord(c)])\n    return \'\'.join(result)\n\ncode = gsm_encode("Hello World {}")\nprint(code)\n# 64868d8d903a7390938d853a1b281b29\nprint(gsm_decode(code))\n# Hello World {}\n
Run Code Online (Sandbox Code Playgroud)\n