首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为7位连接短消息创建UDH

为7位连接短消息创建UDH
EN

Stack Overflow用户
提问于 2014-12-10 06:02:45
回答 1查看 2.3K关注 0票数 2

我需要发送连接的短消息,我将消息(超过160个字节)拆分成小部分,现在我想在每个part.header中放一个头,有6个八进制,如下所示

字段1 (1八进制):用户数据头的长度,在本例中是05。字段2 (1八进制):信息元素标识符,等于00 (连接短消息,8位参考号)字段3 (1八进制):标题的长度,不包括前两个字段;等于03字段4 (1八进制):00-FF,CSMS参考号,对于CSMS字段5 (1八进制):00-FF中的所有SMS部件,部件总数必须相同。字段6(一个八进制):00-FF,这部分的编号在序列中.

示例: 05 0003 CC 02 01消息05 00 03 CC 02消息

现在的问题是,我想把这6个八进制放在7个characters.How中,它需要将短信的大小从160个减少到153个septets.is,这样就可以将这6个八进制转换成7 septets.is中的任何编码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 22:42:47

其实也没那么难。

7位数和8位数之间的差别,因为7位数有它的上层位丢失。

考虑到您直接处理字节,我将假设您在PDU模式下直接这样做,特别是因为您确实知道您的字节布局是什么。

要将8位字节转换为7位,只需去掉上位EG:

如果你有

代码语言:javascript
复制
05 00 03 CC

然后在8位内

代码语言:javascript
复制
00000101 00000000 00000011 11001100

从技术上讲,要将这些截断为7位,只需从顶部去掉如下所示:

代码语言:javascript
复制
0000101 0000000 0000011 1001100

但是,您的上述价值观会有问题,这与您的

代码语言:javascript
复制
CC

价值。如果从上面去掉顶部的位,就会有效地将其更改为

代码语言:javascript
复制
4C

这可能导致您的SMS系统不正确地解释详细信息。

正是由于这个原因,在几乎所有的情况下,当直接处理二进制文件时,都使用8位发送,这样就可以保留值。

但是,如果您想尝试这个示例,下一步是将7位值连接在一起,如下所示

代码语言:javascript
复制
0000101000000000000111001100

然后,您需要将其除以8(传输介质仍然是8位,即使编码不是)。

代码语言:javascript
复制
00001010 00000000 00011100 1100

然后将最后的字节移出8位,以便传输为偶数。

代码语言:javascript
复制
00001010 00000000 00011100 1100xxxx

xxxx要么是所有的1,要么全部是0,这取决于您使用什么来发送字节,如果它是一个AT命令,那么likley将全部是0,所以您的7位编码最终将是

代码语言:javascript
复制
0A 00 1C C0

正如你所看到的,它并没有为你节省任何字节。

只有当您使用GSM字母表(通过设置正确的DCS值获得此值)时,7位编码才能可靠地工作,如何再次设置这一点取决于您首先使用什么发送SMS。

例如,大多数HTTP提供程序都为此提供了某种开关/标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27394251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档