关于短信内容格式及压缩方法今天研究了一下收发短信,8位编码转7位编码研究了半天,弄的一头雾水,最后还是在网上找到答案。 如下: 网短信压缩格式在TP-DCS中指示,TP-DCS在《GSM03.38》中有说明,一般都采用将7bit编码压缩成8bit编码方式,这种压缩方式也在《GSM03.38》中有详细说明。
压缩编码方式将8字节的7bit编码压缩成7字节的8bit编码,也就是说160字节长短信可以压缩为140字节的短信,压缩了20字节,
具体压缩方法如下: 原始的8字节未压缩编码如下: - bits number: 6 5 4 3 2 1 0 1a 1b 1c 1d 1e 1f 1g 2a 2b 2c 2d 2e 2f 2g 3a 3b 3c 3d 3e 3f 3g 4a 4b 4c 4d 4e 4f 4g 5a 5b 5c 5d 5e 5f 5g 6a 6b 6c 6d 6e 6f 6g 7a 7b 7c 7d 7e 7f 7g 8a 8b 8c 8d 8e 8f 8g 经过压缩后的8bit编码如下: - eight characters in seven octets: - bits number: 7 6 5 4 3 2 1 0 2g 1a 1b 1c 1d 1e 1f 1g 3f 3g 2a 2b 2c 2d 2e 2f 4e 4f 4g 3a 3b 3c 3d 3e 5d 5e 5f 5g 4a 4b 4c 4d 6c 6d 6e 6f 6g 5a 5b 5c 7b 7c 7d 7e 7f 7g 6a 6b 8a 8b 8c 8d 8e 8f 8g 7a   
从以上的压缩方法可以看出,第一个压缩后字节是第一个7bit在最高位加上第二个7bit的最低位,第二个压缩字节是第二个7bit的高六位加上第三个7bit的低两位,依次类推。 第七个压缩后字节(最后一个压缩字节)是第七个7bit的最高位加上整个第八个7bit的七位。这样就实现了将8个字节的7bit编码压缩成7个字节的8bit编码。
举一个具体的例子,字符串3132333435363738是7bit编码,现压缩成8bit编码。 3132333435363738转换为bit为00110001(31) 00110010(32) 00110011(33) 00110100(34) 00110101(35) 00110110(36) 00110111(37) 00111000(38),进行转换,
过程如下: a,转换31,32的最低位到31的最高位,可以看到31不变,第一个压缩后字节为31 b,转换32,32由于取了最低位,相当于向右移了一位,为00011001,将33的低两位放在右移一位的31高位上,也就为11011001,即D9。 c,转换33,33由于取了低两位,相当于向右移了两位,为00001100,将34的低三位放在右移两位的33高位上,也就为10001100,即8C。 d,转换34,34由于取了低三位,相当于向右移了三位,为00000110,将35的低四位放在右移三位的34高位上,也就为01010110,即56。 e,转换35,35由于取了低四位,相当于向右移了四位,为00000011,将36的低五位放在右移四位的35高位上,也就为10110011,即B3。 f,转换36,36由于取了低五位,相当于向右移了五位,为00000001,将37的低六位放在右移五位的36高位上,也就为11011101,即DD。 g,转换37,37由于取了低六位,相当于向右移了六位,为00000000,将整个38的七位放在右移六位的37高位上,也就是1110000,即70。 到此7位编码的3132333435363738压缩为了7字节的31D98C56B3DD70,也就是说压缩掉了一字节。 在进行编码实现时,可以将压缩前的短信每8字节为一组进行处理,处理为压缩后的七字节,这样形成外层循环。循环次数为短信长度除以8再向上取整,例如11/8=1, 1+1 = 2,也就是经过两次循环。进行内层循环处理时,需要进行七次循环,循环到n(0<n<8)次时,首先将当前字节右移n-1位,取后一字节的低n位,放在当前字节右移n-1位后的高n位,这样就可以完成对8字节的压缩,进而完成对整个短信的压缩。

sms 7bit编码相关推荐

  1. SMS格式编码与解码

    注:本文转载自网络,忘记具体网址,可百度搜索! 1.短信格式的编码主要是有两种一个是text格式的,明文不用解码一看就懂,一个是PDU格式的,国内的都是的PDU格式的.以下分析的都是PDU格式数据包. ...

  2. ASCII编码-7Bit编码

    转换说明: 代码: private byte[] ASCII_2_7BIT(byte[] aryBytes)         {             int step = 0; //    移动字 ...

  3. GSM手机SMS编码解码

    有两种方式,一有短信网关,二是通过SMS的DTE-DCE接口标准(AT命令集).我们来讨论一下At命令发送短信,下面是在Siemens M75验证. 一共有三种方式来发送和接收SMS信息:Block ...

  4. SMS短信的编码规则

    SMS短信的PDU编码规则 目前,发送短消息常用Text和PDU(Protocol Data Unit)模式.使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信:而PD ...

  5. 短信格式(sms)以及编码总结

    短信开发指通过串口 at 命令驱动短信猫进行短信发送和接收操作. AT 命令 :AT命令是驱动短信设备的标准工业命令,除了业界的标准之外,每个厂商可能会对其进行扩展,不过一般来说,标准命令应该够用,我 ...

  6. SMS短信的PDU编码规则

    先来看两张图: 1. 发送方PDU格式SMS-SUBMIT-PDU *1Message type (1 octet)                                           ...

  7. 7bit解码 java_7bit编码 - 莫问viva的个人空间 - OSCHINA - 中文开源技术交流社区

    8-bit,以及UCS2编码方式都可以理解,那么7-bit编码是怎么个情况呢.下面就慢慢解释吧. 以下是我收到的一条短信:(PDU模式) 0891683108701305F1240D916881767 ...

  8. java usc2短信编码_手机短信PDU编码与解码

    编码代码: / ///文 件:PDUdecoding.cs ///程 序 员:klude ///编制日期:2007-11-04 ///概 要:针对国内短信编码(USC2) ///组成结构:包含四个函数 ...

  9. 手机 SMS PDU 格式参考手册

    开发者指南 SMS with the SMS PDU-mode 翻译整理: 犬犬(心帆) E-Mail: shuixin13@163.com 最后修定日期: 2004-10-18 SMS with t ...

最新文章

  1. java mybatis向mysql数据库插入中文出现乱码
  2. 使用WebLogic共享库连续交付ADF应用程序
  3. h5 php js实验总结,H5学习_番外篇_PHP数据库操作
  4. 渐进式app_如何编写渐进式Web App新闻网站
  5. Code Blocks 10 05的安装及使用
  6. GigaSpaces Grid for dataBase Cashing
  7. leetcode[541]翻转字符串里的单词/reverse words in a string 综合考察了字符串的多种操作
  8. asp.net网站后台退出后,点后退按钮仍能进,如何安全退出
  9. VUE前端+Node后台模拟打印机Web即时打印
  10. 高等数学|微积分(上)知识点总结
  11. LINUX摄像头驱动分析
  12. matlab求合同矩阵,matlab-线性代数 判断 合同矩阵
  13. Arduino实验三:继电器实验
  14. 语音信号a率压缩算法c语言,基于OMAP5912平台的语音压缩算法实现
  15. centos基本命令
  16. 一个leader,要有角色认知
  17. moment 农历_设计农历新年赠品
  18. iOS一行代码让你的应用中UIScrollView的滑动与侧滑返回并存
  19. 子进程、僵尸进程、孤儿进程(个人总结)
  20. 一个简单的Java抽奖程序

热门文章

  1. js日历(包含农历节假日)
  2. 第九讲 Linux I2C子系统及mma8653重力传感器驱动编写
  3. CSS尺寸单位px、em、rem、vw、vh以及%的区别
  4. 云服务器  虚拟主机  服务器
  5. 服务器远程不上怎么办?
  6. WIN7搜索工具everything
  7. 数据库存入图片成功但显示不出来
  8. 研究生毕业后,再重新读个硕士
  9. 【逗老师的无线电】Motorola DMR设备如何经由BM中心网络上报APRS位置信息
  10. 蓝桥云算法题之火柴棒等式——Python满分解答