本文主要是介绍有关CDMA2000 写号IMSI_M计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有关CDMA2000写号时IMSI_M计算,如果你选择和我一样看协议的话,本文下面你可以不用看了,直接看协议第六章 IS95B测试方提供一个IMSI号刷到UIM卡里面,这就需要把数字格式的IMSI转换成CDMA2000文件系统6F22(EF_IMSI_M)中要求的格式。
6F22格式:
00 AA AA BB BB BB CC 80 DD DD
00代表CLASS=0
AA AA根据MIN前3位计算
BB BB BB根据MIN后7位计算
CC根据MNC计算
80代表IMSI_M_PROGRAMMED=1、IMSI_M_ADD_NUM=0
DD DD根据MCC计算
计算AA AA:
选中MIN前3位,分成三个个位数,分别是D1、D2、D3
计算NUM = D1 * 100 + D2 * 10 + D3 - 111(如果D1、D2、D3中出现0,则当作10计算)
NUM转换为2字节小端格式16进制,位数不足前面补0。
计算BB BB BB:
以MIN第4-6位为数据,按照AA AA 计算方法算出NUM,将NUM转换为10bit的2进制,不足补0
将MIN第7位单独取出来,按照标准10进制的计算方法,计算出4bit的2进制,不足补0
以MIN第8-10位为数据,按照AA AA计算方法算出NUM,转为10bit的2进制
将上述3步的得出来的2进制数拼起来,转换成3进制的小端格式1进制
计算CC:
把MNC分割成2个个数,分别是D1、D2
NUM = D1 * 10 + D2 - 11(如果D1、D2中出现0,则当10计算)
将NUM转换为1字节16进制
计算DD DD:
以MCC为数据,按照AA AA计算方法,得出2字节小端格式16进制
例子:
Imsi:46003 096 645 2 459
MSI_M_S2根据MIN中的096进行按照协议规则计算值为985对应的IMSI_M_S2:D9 03
IMSI_M_S1根据MIN中的后7为进行根据协议规则计算分别为:
645计算结果为:534 对应二进制值为:1000010110
2计算结果为: 2 对应二进制值为:0010
459计算结果为:348 对应二进制值为:0101011100
上面这3个值合并后二进制为100001011000100101011100 = 0x 85 89 5C,3字节小端格式0x5C8985
MNC为03,NUM = 92,1字节16进制为5C
MCC为460,NUM = 359,2字节16进制小端格式 67 01
因此 6F22 文件内容为
00 D9 03 5C 89 85 80 67 01
当然由IMSI_M也可以推出IMSI,计算AA AA时可以明确网络制式,利用十六进制的位数相同或者余数很容易算出来
这篇关于有关CDMA2000 写号IMSI_M计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!