android pdu 编码规则,[转载]PDU编码规则
目前,發(fā)送短消息常用Text和PDU(Protocol Data
Unit,協(xié)議數(shù)據(jù)單元)模式。使用Text模式收發(fā)短信代碼簡(jiǎn)單,實(shí)現(xiàn)起來(lái)十分容易,但最大的缺點(diǎn)是不能收發(fā)中文短信;而PDU模式不僅支持中文短信,也能發(fā)送英文短信。PDU模式收發(fā)短信可以使用3種編碼:7-bit、8-bit和UCS2編碼。7-bit編碼用于發(fā)送普通的ASCII字符,8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,UCS2編碼用于發(fā)送Unicode字符。一般的PDU編碼由A
B C D E F G H I J K L M十三項(xiàng)組成。
A:短信息中心地址長(zhǎng)度,2位十六進(jìn)制數(shù)(1字節(jié))。
B:短信息中心號(hào)碼類(lèi)型,2位十六進(jìn)制數(shù)。
C:短信息中心號(hào)碼,B+C的長(zhǎng)度將由A中的數(shù)據(jù)決定。
D:文件頭字節(jié),2位十六進(jìn)制數(shù)。
E:信息類(lèi)型,2位十六進(jìn)制數(shù)。
F:被叫號(hào)碼長(zhǎng)度,2位十六進(jìn)制數(shù)。
G:被叫號(hào)碼類(lèi)型,2位十六進(jìn)制數(shù),取值同B。
H:被叫號(hào)碼,長(zhǎng)度由F中的數(shù)據(jù)決定。
I:協(xié)議標(biāo)識(shí),2位十六進(jìn)制數(shù)。
J:數(shù)據(jù)編碼方案,2位十六進(jìn)制數(shù)。
K:有效期,2位十六進(jìn)制數(shù)。
L:用戶(hù)數(shù)據(jù)長(zhǎng)度,2位十六進(jìn)制數(shù)。
M:用戶(hù)數(shù)據(jù),其長(zhǎng)度由L中的數(shù)據(jù)決定。J中設(shè)定采用UCS2編碼,這里是中英文的Unicode字符。
PDU編碼協(xié)議簡(jiǎn)單說(shuō)明
例1
發(fā)送:SMSC號(hào)碼是+8613800250500,對(duì)方號(hào)碼是13693092030,消息內(nèi)容是“Hello!”。從手機(jī)發(fā)出的PDU串可以是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0
00 00 00 06 C8 32 9B FD 0E 01
對(duì)照規(guī)范,具體分析:
分段?含義?說(shuō)明
08?SMSC地址信息的長(zhǎng)度?共8個(gè)八位字節(jié)(包括91)
91?SMSC地址格式(TON/NPI)?用國(guó)際格式號(hào)碼(在前面加‘+’)
68 31 08 20 05 05
F0?SMSC地址?8613800250500,補(bǔ)‘F’湊成偶數(shù)個(gè)
11?基本參數(shù)(TP-MTI/VFP)?發(fā)送,TP-VP用相對(duì)格式
00?消息基準(zhǔn)值(TP-MR)?0
0D?目標(biāo)地址數(shù)字個(gè)數(shù)?共13個(gè)十進(jìn)制數(shù)(不包括91和‘F’)
91?目標(biāo)地址格式(TON/NPI)?用國(guó)際格式號(hào)碼(在前面加‘+’)
68 31 96 03 29 30
F0?目標(biāo)地址(TP-DA)?8613693092030,補(bǔ)‘F’湊成偶數(shù)個(gè)
00?協(xié)議標(biāo)識(shí)(TP-PID)?是普通GSM類(lèi)型,點(diǎn)到點(diǎn)方式
00?用戶(hù)信息編碼方式(TP-DCS)?7-bit編碼
00?有效期(TP-VP)?5分鐘
06?用戶(hù)信息長(zhǎng)度(TP-UDL)?實(shí)際長(zhǎng)度6個(gè)字節(jié)
C8 32 9B FD 0E
01?用戶(hù)信息(TP-UD)?“Hello!”
例2
接收:SMSC號(hào)碼是+8613800250500,對(duì)方號(hào)碼是13693092030,消息內(nèi)容是“你好!”。手機(jī)接收到的PDU串可以是
08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00
08 30 30 21 80 63 54 80 06 4F 60 59 7D 00
21對(duì)照規(guī)范,具體分析:
分段?含義?說(shuō)明
08?地址信息的長(zhǎng)度?個(gè)八位字節(jié)(包括91)
91?SMSC地址格式(TON/NPI)?用國(guó)際格式號(hào)碼(在前面加‘+’)
68 31 08 20 05 05
F0?SMSC地址?8613800250500,補(bǔ)‘F’湊成偶數(shù)個(gè)
84?基本參數(shù)(TP-MTI/MMS/RP)?接收,無(wú)更多消息,有回復(fù)地址
0D?回復(fù)地址數(shù)字個(gè)數(shù)?共13個(gè)十進(jìn)制數(shù)(不包括91和‘F’)
91?回復(fù)地址格式(TON/NPI)?用國(guó)際格式號(hào)碼(在前面加‘+’)
68 31 96 03 29 30
F0?回復(fù)地址(TP-RA)?8613693092030,補(bǔ)‘F’湊成偶數(shù)個(gè)
00?協(xié)議標(biāo)識(shí)(TP-PID)?是普通GSM類(lèi)型,點(diǎn)到點(diǎn)方式
08?用戶(hù)信息編碼方式(TP-DCS)?UCS2編碼
30 30 21 80 63 54
80?時(shí)間戳(TP-SCTS)?2003-3-12
08:36:45?+8時(shí)區(qū)
06?用戶(hù)信息長(zhǎng)度(TP-UDL)?實(shí)際長(zhǎng)度6個(gè)字節(jié)
4F 60 59 7D 00
21?用戶(hù)信息(TP-UD)?“你好!”
若基本參數(shù)的最高位(TP-RP)為0,則沒(méi)有回復(fù)地址的三個(gè)段。從Internet上發(fā)出的短消息常常是這種情形。
注意號(hào)碼和時(shí)間的表示方法,不是按正常順序順著來(lái)的,而且要以‘F’將奇數(shù)補(bǔ)成偶數(shù)。
在PDU
Mode中,可以采用三種編碼方式來(lái)對(duì)發(fā)送的內(nèi)容進(jìn)行編碼,它們是7-bit、8-bit和UCS2編碼。7-bit編碼用于發(fā)送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數(shù)據(jù),每8個(gè)字符可“壓縮”成7個(gè);8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,比如圖片和鈴聲等;而UCS2編碼用于發(fā)送Unicode字符。PDU串的用戶(hù)信息(TP-UD)段最大容量是140字節(jié),所以在這三種編碼方式下,可以發(fā)送的短消息的最大字符數(shù)分別是160、140和70。這里,將一個(gè)英文字母、一個(gè)漢字和一個(gè)數(shù)據(jù)字節(jié)都視為一個(gè)字符。
需要注意的是,PDU串的用戶(hù)信息長(zhǎng)度(TP-UDL),在各種編碼方式下意義有所不同。7-bit編碼時(shí),指原始短消息的字符個(gè)數(shù),而不是編碼后的字節(jié)數(shù)。8-bit編碼時(shí),就是字節(jié)數(shù)。UCS2編碼時(shí),也是字節(jié)數(shù),等于原始短消息的字符數(shù)的兩倍。如果用戶(hù)信息(TP-UD)中存在一個(gè)頭(基本參數(shù)的TP-UDHI為1),在所有編碼方式下,用戶(hù)信息長(zhǎng)度(TP-UDL)都等于頭長(zhǎng)度與編碼后字節(jié)數(shù)之和。如果采用GSM
03.42所建議的壓縮算法(TP-DCS的高3位為001),則該長(zhǎng)度也是壓縮編碼后字節(jié)數(shù)或頭長(zhǎng)度與壓縮編碼后字節(jié)數(shù)之和。
總結(jié)
以上是生活随笔為你收集整理的android pdu 编码规则,[转载]PDU编码规则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 转到设置以激活(转到设置以激活windo
- 下一篇: android+4.4+jni闪退,na