本文主要是介绍7bit 编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GSM默认采用7bit编码,实际上,7位编码是种压缩算法,因为,ASCII码(不包括扩展ASCII),其值小于0x80,最高位bit8是0,被忽略了;而7bit编码就利用了这一位来存储数据;其编码时,依次将下一7位编码的后几位逐次移至前面,形成新的8位编码。
1、 第一个字节
8 7 6 5 4 3 2 1
0 a7 a6 a5 a4 a3 a2 a1
2、第二个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
0 0 b7 b6 b5 b4 b3 b2
3、第三个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
c2 c1 b7 b6 b5 b4 b3 b2
0 0 0 c7 c6 c5 c4 c3
4、第四个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
c2 c1 b7 b6 b5 b4 b3 b2
d3 d2 d2 c7 c6 c5 c4 c3
0 0 0 0 d7 d6 d5 d4
5、第五个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
c2 c1 b7 b6 b5 b4 b3 b2
d3 d2 d2 c7 c6 c5 c4 c3
e4 e3 e2 e1 d7 d6 d5 d4
0 0 0 0 0 e7 e6 e5
6、第六个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
c2 c1 b7 b6 b5 b4 b3 b2
d3 d2 d2 c7 c6 c5 c4 c3
e4 e3 e2 e1 d7 d6 d5 d4
f5 f4 f3 f2 f1 e7 e6 e5
0 0 0 0 0 0 f7 f6
7、第七个字节
8 7 6 5 4 3 2 1
b1 a7 a6 a5 a4 a3 a2 a1
c2 c1 b7 b6 b5 b4 b3 b2
d3 d2 d2 c7 c6 c5 c4 c3
e4 e3 e2 e1 d7 d6 d5 d4
f5 f4 f3 f2 f1 e7 e6 e5
g6 g5 g4 g3 g2 g1 f7 f6
0 0 0 0 0 0 0 g7
解码时,采用相反的过程进行译码。普通的ASCII码对应的字符只需维护一个7bit映射表,对于扩展的ASCII字符,同样也采用一个扩展的映射表即可。
例如,”Hello World!”的7bit编码结果为:
PDU信息中的长度是实际字母的个数,而不是编码后的个数,即每8个字母就差1个字节。
编码时每8个字母一组,编码后为7个字节。
解码时应7个一组分开,每组解为8个字符,各组之间并无联系。
注意:短信发送的是pdu字符串,在用上面函数解码前,需要把pdu字符串转字节数组byte[]才行。
具体的7bit编解码源程序见百度文库:PDU协议7bit编码
这篇关于7bit 编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!