已以下指令为例
已知发送 USSD 的格式为:
Send USSD aaaxxxxxxxxxxxx*yyyyyyy#
;Fetch:==:SEND USSD SEND 801200001F ASSERT D01D81030112008202818305008A100F2A5C0DA782C564335ACDA6CAE57223 9000 ;命令类型: Send USSD ;设备标识: SIM==>Network ;α标识符=() ;DCS=(0F) ;USSD String=(2A5C0DA782C564335ACDA6CAE57223) ; =(2A3835382A303132333435362A39393923)
首先对ASSERT指令进行拆解:
ASSERT D01D81030112008202818305008A100F2A5C0DA782C564335ACDA6CAE57223 Proactive command 命令类型 12 : SEND USSD ============================ 命令细节 ---------------------------- 命令细节标记 81 长度="03" 03 命令代码 01 命令类型 12 命令限定符 00 RFU ============================ 设备标识 ---------------------------- 设备标识标记 82 长度="02" 02 起始端设备标识 81:UICC; 目的端设备标识 83:Network; ============================ α标识符 ---------------------------- α标识符标记 05 长度 00 α标识符 ============================ USSD字符串 ---------------------------- USSD字符串标记 8A 长度 10 TON和NPI 0F USSD字符串 2A5C0DA782C564335ACDA6CAE57223
然后对USSD 字符串使用7bit解码方式进行解析,即可得到发送的原始数据:
USSD字符串 2A5C0DA782C564335ACDA6CAE57223 解析后的字符串 *858*0123456*999#
注:
GSM默认采用7bit编码,实际上,7位编码是种压缩算法,因为,ASCII码(不包括扩展ASCII),其值小于0x80,最高位bit8是0,被忽略了;而7bit编码就利用了这一位来存储数据;其编码时,依次将下一7位编码的后几位逐次移至前面,形成新的8位编码。
标签:编码,UICC,USSD,Send,----------------------------,字符串,标识符 From: https://www.cnblogs.com/zhaoyunt/p/17099861.html