admin 管理员组

文章数量: 887021


2024年1月24日发(作者:activity文件)

电话本、短信及短信中心的转换

1. 电话本(6F3A文件)

电话本文件6F3A,联通的6F3A文件创建了250条记录,可以存储250个电话本,每个记录的长度是28个字节,在这28个字节中,前14个字节记录姓名,后14个字节记录对应的号码。

1.1. 更新文件的脚本格式

下面是更新电话本文件的脚本格式,其中前面3条是固定的,最后一条指令中的X和Y都是可变的,其他部分都固定。

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3A,S,,9FXX

!A0DCXX041CYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYFFFF,S,,9000

X数据区有一个字节,表示要更新的记录编号的十六进制值,如果要更新第20条记录,则X=0x14。

Y数据区有26个字节,表示电话本文件中姓名和电话号码的数据内容,其中前14个字节存储姓名,后12个字节存储电话号码。后面的章节将讲解如何拼凑Y的内容。

1.2. 姓名部分的转换规则

姓名中如果包含汉字,则在转换成数据编码时,需在前面加一个字节的UCS2编码标识“0x80”(注:“0x”是表示后续数据是16进制数),并将姓名都转成UCS2编码,又由于UCS2编码中,两个字节才表示一个字符,因此,14个字节只能最多表示6个UCS2字符。所以,姓名中,如果包含汉字,则最多6个字符,如果全是字母或数字,转换时,前面不需要加编码标识,直接将字符转成ASCII码。由于ASCII码一个字节就能表示一个字符,这样,14个字节最多可以存储14个ASCII码的字符,所以,如果姓名是字母和数字的组合,不包含汉字,最多可达14个字符。

姓名转换好后,检查转换后的字符个数有没有达到14个字节,如果没达到,需要补“0xFF”。

例如:

1. 姓名:张三 转换后:805F204E09FFFFFFFFFFFFFFFFFF

2. 姓名:张123 转换后:805F23FFFFFFFFFF

3. 姓名:zhang3 转换后:7A68616E6733FFFFFFFFFFFFFFFF

4. 姓名:Ab张cd2 转换后: 8F22FF

5. 姓名:Abcdefgh123456 转换后: 467683

6. 姓名:Ab张cd23 长度超出6,不能转换!

7. 姓名:Abcdefgh1234567 长度超出14,不能转换!

1.3. 号码部分的转换规则

号码部分的12个字节中,第一个是长度,表示后续的电话号码编码的有效数据字节数,第二个是号码类型标识,接下来的10个字节是记录号码的数字内容的。

号码类型标识为“0x81”或“0x91”。如果号码前没有“+”,标识符为“0x81”;如果号码前有“+”,标识符为“0x91”,“+”不再需要做转换。

号码数字的保存格式是高低位交换的BCD码格式。一个字节能保持2个数字,所以电话号码最长可以达到20个数字。当电话号码的数字个数是奇数时,在后面补一个“F”后再参与高低位互换。

号码标识和号码数字转换好后,算出一共有多少个字节,并将字节数补在号码标识前。

这时,检查数据长度,如果长度没到12个字节,后面需补“0xFF”.

例如:

1. 号码:156****8000 转换后:00F0FFFFFFFF

2. 号码:+86156****8000 转换后:8900F0FFFFFF

3. 号码:65171100 转换后:FFFFFFFFFFFF

4. 号码:15611789 转换后:0B8151167698

5. 号码:1561178901长度超出20,不能转换!

1.4. 姓名号码合并

姓名和号码都转换好以后,将两部分拼接,姓名放前,号码放后,拼成一个26个字节的Y数据,再将数据填入第一小节中的脚本指令中就可以了。

例如:

姓名:张三 号码:156****8000

拼接出来的Y数据如下:

805F204E09FFFFFFFFFFFFFFFFFF00F0FFFFFFFF

如果将该电话号码信息存入电话本文件的第一条,则X = 0x01

对应的脚本如下:

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3A,S,,9FXX

!A0DC01041C805F204E09FFFFFFFFFFFFFFFFFF00F0FFFFFFFFFFFF,S,,9000

1.5. 说明

在转换预置电话本时,一次如果有多条电话本需要预置(最多不可超过电话本文件的记录条数250条),脚本可生成如下格式,电话本的更新从第一条记录开始,一次递增。

例如:

姓名:张三 号码:156****8000

姓名:张三1 号码:156****8001

姓名:张三2 号码:156****8002

则脚本如下:

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3A,S,,9FXX

!A0DC01041C805F204E09FFFFFFFFFFFFFFFFFF00F0FFFFFFFFFFFF,S,,9000

!A0DC02041C805F204E090031FFFFFFFFFFFFFF00F1FFFFFFFFFFFF,S,,9000

!A0DC03041C805F204E090032FFFFFFFFFFFFFF00F2FFFFFFFFFFFF,S,,9000

2. 短信(6F3C文件)

短信文件6F3C,联通的6F3C文件创建了50条记录,每条记录的长度是176个字节。

2.1. 更新文件的脚本格式

下面是更新短信文件的脚本格式,其中前面3条是固定的,最后一条指令中的X和Y、Z、V、U都是可变的,其他部分都固定。

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3C,S,,9FXX

!A0DCXX04B003YYYYYYYYYYYYYYYYYY04ZZZZZZZZZZ00VVTT1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU,S,,9000

X数据区有一个字节,表示要更新的记录编号的十六进制值,如果要更新第1条记录,则X=0x01。

Y数据区有9个字节,表示短信中心地址。

Z数据区字节不固定,2到12个字节,表示发送短信的源地址。

V数据区1个字节,表示短信内容编码指示。

U数据区字节数不固定,最长141个字节,表示短信内容。

T数据区1个字节,表示收到短信的年份。

其他数据都为固定值。

2.2. 短信中心地址的转换

联通的短信中心都以“+86”开头,长度固定是13个数,如:“+86130****2500”,在转换前,请先判断短信中心号码是否合法。如果合法,再按照1.3章节中所描述的电话号码转换规则转换数据。数据的长度固定为9个字节。

例如:

短信中心+86转换后的数据是2005F0

2.3. 源地址的转换

源地址数据最短2个字节,最长12个字节。

源地址的转换规则与1.3章节中的电话号码转换规则类似,第一个字节是长度,第二个字节是号码类型标识,接下来是号码的数字内容。

与1.3章节中唯一不同的地方是第一个字节长度编码,在源地址中这个字节表示的是地址号码的数字个数,而不是表示后续的电话号码编码的有效数据字节数。

号码类型和号码数字内容的转换格式与1.3章节一样。

源地址号码数字个数最长不能超过20个数字。

例如:

源地址 100101234转换后的数据是F4

2.4. 短信内容编码指示

短信内容编码指示为一个字节,表示后续短信内容的编码方式。

如果后面短信内容是以UCS2码方式编码,则V=“0x08”,

如果后面短信内容是以ASCII码方式编码,则V=“0x04”,

2.5. 短信内容的转换

短信内容长度不固定,格式是1字节的后续内容字节个数标识+短信内容(最长为140个字节)。

如果短信内容中包含汉字,则必须将短信以UCS2方式编码,并且短信最长70个字符。

如果短信内容不包含汉字,则可以以ASCII码方式编码。短信最长可达140个字符。

注意,短信内容的编码方式一定要与V数据区的编码指示一致。

例如:

短信内容:请于今天上午9点30分到第2会议室开会。

转换后的编码:288BF74E8E4ECA59294E0A5348003970B95230

7B2C00324F1A8BAE5BA45F004F1A3002

并且V必须设置成08

短信内容:Thank you very much!

转换后的编码:145468616E6B20796F752D75636821

并且V必须设置成04

2.6. 收到短信的年份的转换

年份这个字节只标识年份后两位,并且,数字的高低位需要互换。

例如:

短信中心时间的年份为:2007年 转换后的编码:70

2.7. 各项数据合并

将前面提到的短信中心(Y)、源地址(Z)、短信内容编码(V)、短信内容(U)和短信中心时间(T)替换到更新短信的脚本中,如果这段数据“03YYYYYYYYYYYYYYYYYY04ZZZZZZZZZZ00VVTT1

UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU”的总长度不到176个字节,则在后面补“0xFF”。

例如:

短信中心:+86

源地址:100101234

短信内容:请于今天上午9点30分到第2会议室开会。

收到短信的年份:2009年

更新第一条短信

则更新脚本如下:

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3C,S,,9FXX

!A0DC0104B0112005F032F4000000288BF74E8E4ECA59294E0A5348003970B952307B2C00324F1A8BAE5BA45F004F1A3002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,S,,9000

2.8. 说明

和预置电话本一样,可一次预置多条短信(最多不可超过短信文件的记录条数50条),脚本可生成如下格式,更新的记录编号从第一条记录开始,一次递增。

例如:

第一条短信:

短信中心:+86

源地址:100101234

短信内容:请于今天上午9点30分到第2会议室开会。

收到短信的年份:2005

第二条短信:

短信中心:+86130****2500

源地址:100109999

短信内容:欢迎使用中国联通,服务热线10010。

收到短信的年份:2006

第三条短信:

短信中心:+86

源地址:10011

短信内容:Thank you very much!

转换后的编码:145468616E6B20796F752D75636821

收到短信的年份:2007

则更新脚本如下:

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F3C,S,,9FXX

!A0DC0104B0112005F032F4000000288BF74E8E4ECA59294E0A5348003970B952307B2C00324F1A8BAE5BA45F004F1A3002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,S,,9000

!A0DC0204B0512005F099F9000000266B228FCE4F7F75284E2D56FD8054901AFF0C670D52A170ED7EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,S,,9000

!A0DC0304B0113005FF1616E6B20796F752D75636821FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,S,,9000

3. 短信中心(6F42文件)

短信中心文件6F42,联通的6F42文件创建了5条记录,可以存储5个短信中心信息,但是预置的短信中心都存在第一条中,所以只需要修改第一条记录。

3.1. 更新文件的脚本格式

下面是更新短信中心文件的脚本格式,其中前面3条是固定的,最后一条指令中的X是可变的,其他部分都固定。

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F42,S,,9FXX

!A0DC010428FFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFXXXXXXXXXXXXXXXXXXFFFFFFFFFFFF,S,,9000

X数据区有9个字节,表示短信中心地址。

其他数据都为固定值。

3.2. 短信中心地址的转换

联通的短信中心都以“+86”开头,长度固定是13个数,如:“+86130****2500”,在转换前,请先判断短信中心号码是否合法。如果合法,再按照1.3章节中所描述的电话号码转换规则转换数据。数据的长度固定为9个字节。

例如:

短信中心+86转换后的数据是2005F0

将这段转换后的数据放入脚本格式中,得到更新脚本:

!A0A40000023F00,S,,9FXX

!A0A40000027F10,S,,9FXX

!A0A40000026F42,S,,9FXX

!A0DC010428FFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF2005F0FFFFFFFFFFFF,S,,9000

4. 编辑历史

版本号

V1.0

时间

2009-10-22

修改者

郭娜 初始版

1、在更新短信脚本中将收到短信的年份作为变量处理,V1.1 2009-12-15 郭娜

在2.1章节的脚本格式中将“9”的第一个字节09改为“TT”

2、增加了2.6章节

3、修改了所有更新短信的脚本用例

修改内容


本文标签: 短信 字节 号码