長いテキストメッセージに興味がある場合は、試すことができます
Pythonメソッドに従って書き直します
/*** PDU SMS分析*** @param pdupayload* @return*/public static stringmesmsinfo(byte [] pdupayload)throws unsupportedencodingexception {int startpos = 3; // originator addressint mrp_oa_len = pdupayload [ BYTE [MRP_OA_LEN]; System.ArrayCopy(pdupayload、startpos + 1、mrp_oa、0、mrp_oa_len); startpos = startpos + 1 + mrp_oa_len; int mtpdu_len = pdupayload [startpos]; // TP-SPR TP-VPF TP-RD TP-MTI // //テキストメッセージコンテンツにプロトコルヘッダー情報が含まれているかどうか、0は含まれません、1は(長いテキストメッセージ、プッシュテキストメッセージ)int tp_vpf =(tp_header >> 3)&3; //テキストメッセージに有効な期間バイトが含まれているかどうか、0には含まれていない、その他は//#00を含む有効期間がないことを意味し、TP-VPは00に設定されます。 //#01はフォーマットを追加することを意味し、TP-VPは7バイトを占有します。 //#11は絶対形式を意味し、TP-VPは7バイトを占有します。 (smsnumberlen + 1) / 2 + 1; byte [] mtp_da = new byte [mtp_da_len]; system.arraycopy(pdupayload、startpos + 1、mtp_da、0、mtp_da_len * 1); byte mtp_da_format = mtp_da [0]; byte [mtp_da.length -1]; system.arraycopy(mtp_da、1、smsnumberraw、0、mtp_da.length -1); string smsnumber = ""; int j = 0; for (smsnumberraw [j]&0xf);} else {smsnumber = smsnumber +(int)((smsnumberraw [j]&0x0ff)>> 4); 4); j ++;}} startpos + 1 + mtp_da_len; byte mtp_pid = pdupayload [startpospospospopdcs] pdupayload [startpos + 1]; //# "00"は、7ビットエンコーディングを使用し、8ビットエンコードを使用するために「02」に設定され、「08」に設定してUCS2エンコーディングを使用することを意味します。 startpos = startpos + 2; if(tp_vpf == 2){startpos = startpos + 1;} else if(tp_vpf == 1 || tp_vpf == 3){startpos = startpos + 7;} // //#2。バイト2:ヘッダーのタイプ、固定的に0x00に記入し、長いSMSを示します。 //#3。バイト3:サブパケットの長さは、次の3バイトの長さを示します。 //#4。バイト4からバイト6:パッケージコンテンツ://#a)バイト4:長いメッセージ参照番号。各SPから各ユーザーに送信された各参照番号は異なる必要があります。同じ端末が同じSPのメッセージの異なる長いメッセージを識別できるように、最大255で0から1を追加して1を追加できます。 //#b)バイト5:1から255のこの長いメッセージのメッセージの総数は、通常、2を超える必要があります。 //#c)バイト6:長いメッセージのこのメッセージの位置またはシーケンス番号1から255、1つ目は1、2番目は1、最後のものは4番目のバイトの値に等しい。 //#例://#05 00 03 00 02 01 //#05 00 03 00 02 02 02 02 int smspayloadlen = pdupayload [startpos]; startpos = startpos + 1; string smscontent = ""; if(tp_udhi == 1){// 4]; byte smsidx = pdupayload [startpos + 5]; startpos = startpos + 6; smscontent = "long sms(" + bytetohex(smsidx) + "/" + bytetohex(smstotal) + "}"; 6;} byte [] smspayload = new byte [pdupayload.length -startpos]; system.arraycopy(pdupayload、startpos、smspayload、0、pdupayload.length -startpos); if(mtp_dcs == 0){// asciidata = 0; int lastbyteremain = 0; = asciidata >> 7; lastbyteremain = lastbyteremain + 1; if(lastbyteremain> = 7){smscontent = smscontent +(char)((asciidata&0x0ff)&0x7f); asciidata = asciidata >> 7; lastbytermain = lastbytermain -7;}} (mtp_dcs == 8){//#ucs-2-(int i = 0; i <smspayloadlen; i = i + 2){int cc1 =(smspayload [i]&0x0ff) * 256; int cc2 = smspayload [i + 1]&0x0ff; smscontent = smscontent +(char)(cc1 + cc2);}} return smsnumber + ":" + smscontent;}上記は、編集者によって導入されたJava PDU SMSデコードの包括的な分析です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!