Jika Anda tertarik dengan pesan teks panjang, Anda dapat mencobanya
Tulis ulang menurut metode python
/*** PDU SMS Analisis *** @param Pdupayload* @return*/public static string retrievesmsinfo (byte [] PDUPAYLOAD) melempar UnsupportedencodingException {int startpos = 3; //#originator newp_oa_len = PDUPAYLOAD [startpos]; 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];/////int mtpdu_len = PDUPAYLOAD [startpos]; //////int mtpdu_len = PDUPAYLOAD [startpos];//Bit No. TP-UDHI TP-SPR TP-VPF TP-RD TP-MTI //#downlink TP-RP TP-UDHI TP-SRI TP-MMS TP-MTI byte TP_Header = pduPayload[startPos + 1];byte TP_Msg_Ref = pduPayload[startPos + 2];int TP_UDHI = (TP_Header >> 6) & 1; // Apakah konten pesan teks berisi informasi header protokol, 0 tidak termasuk, 1 berisi (pesan teks panjang, pesan pesan teks) int tp_vpf = (tp_header >> 3) & 3; // Apakah pesan teks berisi byte periode yang valid, 0 tidak termasuk, yang lain termasuk // #00 berarti tidak ada periode yang valid, TP-VP diatur ke 00. // #10 mewakili format relatif, dan TP-VP memakan 1 byte. // #01 berarti menambahkan format, TP-VP mengambil 7 byte. // #11 means absolute format, TP-VP takes up 7 bytes int TP_MMS = (TP_Header >> 2) & 1;//# TP-MMS(TP-More-Message-to-Send): 1 No more messages sent in the SMS center startPos = startPos + 3;//##Opular number byte smsNumberLen = pduPayload[startPos];int mTP_DA_len = (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[] smsNumberRaw = new byte [mtp_da.length - 1]; System.arraycopy (mtp_da, 1, smsnumberraw, 0, mtp_da.length - 1); string smsnumber = ""; int j = 0; untuk (int i = 0; i <smsnumberlen; i ++) {if+(iT i = 0; i <smsnumberlen; i ++) {ifn (i smsnumberLen; (smsnumberraw [j] & 0xf);} else {smsnumber = smsnumber + (int) ((smsnumberraw [j] & 0x0ff) >> 4); j ++;}} startpos = startpos + 1 + mtp_da_len; byte mtp_pid = pdupye [pos]; byte mtp_pid = pduPye [mtp]; PDUPAYLOAD [startPos + 1]; //#"00" berarti menggunakan pengkodean 7-bit, diatur ke "02" untuk menggunakan pengkodean 8-bit, dan diatur ke "08" untuk menggunakan encoding UCS2. startpos = startpos + 2; if (tp_vpf == 2) {startpos = startpos + 1;} lain jika (tp_vpf == 1 || tp_vpf == 3) {startPos = startpos + 7;} //# long sms: 6 bidang perlu ditambahkan di depan konten/ 0x05; //# 2. Byte 2: Jenis header, diisi secara fiksasi 0x00, menunjukkan SMS panjang; //# 3. Byte 3: Panjang subpacket, dengan flatikan mengisi 0x03, menunjukkan panjang tiga byte berikutnya; //# 4. Byte 4 ke Byte 6: Konten Paket: //# A) Byte 4: Nomor Referensi Pesan Panjang. Setiap nomor referensi yang dikirim oleh setiap SP ke setiap pengguna harus berbeda. Anda dapat mulai dari 0 dan menambahkan 1 setiap kali, dengan maksimal 255, sehingga terminal yang sama dapat mengidentifikasi berbagai pesan panjang pesan dari SP yang sama; //# b) Byte 5: Jumlah total pesan dalam pesan panjang ini, dari 1 hingga 255, umumnya nilainya harus lebih besar dari 2; //# c) Byte 6: Posisi atau nomor urutan pesan ini dalam pesan panjang, dari 1 hingga 255, yang pertama adalah 1, yang kedua adalah 2, dan yang terakhir sama dengan nilai byte keempat. //# Contoh: //# 05 00 03 00 02 01 //# 05 00 03 00 02 02 INT SMSPAYLOADLEN = PDUPAYLOAD [startPos]; startPos = startPos + 1; string smscontent = ""; if (tp_udhi == 1) {//# long sms-sms = long sms-sunping = tp_udhi == 1) {//# long sms-sms = long sms-sunping = smsoFiFied = TP_UDHI == 1) {//# long SMS-SMS-Long SMS-Long SMS-BICHOUDE = TP_UDHI == + 4]; byte smsidx = pdupayload [startpos + 5]; startPos = startPos + 6; smscontent = "long sms (" + bytetohex (smsidx) + "/" + bytetohex (smstotal) + "}"; smScontent = string baru (smscontent.getbytent (smstotal) + "}"; smscontent = new string (smscontent.getbytent (smstotal) + "}"; smscontent = new string (smscontent.getby.goY - 6;} byte [] smspayload = byte baru [PDUPAYLOAD.Length - startPos]; System.arraycopy (PDUPAYLOAD, StartPos, SmSpayLoad, 0, PDUPAYLOAD.Length - StartPos); if (mtp_dcs == 0) {//#7 -Bit encoding 8; int asciidata = 0; int lastbytereMain = 0; untuk (int i = 0; i <smspayloadlen; i ++) {asciidata = asciidata + ((smspayload [i] & 0x0ff) << lastbyteremain); smscontent = smscontent + (char) (char)) << asciDeMain); smscontent = smscontent + (char) (char) (asciidat); smscontent = smscontent + (char) (char) (asciidat); smscontent = smscontent + (char) (char) (asciidat); smscontent = smScontent + (char) (char) (nuci -n) asciidata >> 7; lastbyteremain = lastbyteremain + 1; if (lastbyteremain> = 7) {smscontent = smscontent + (char) ((asciidata & 0x0ff) & 0x7f); asciidata = asciidata >> 7; lastbyteremain = lastbyterterer = 7dbyterter- 7; asciidata >> 7; lastbyteremain = lastbyterterer - asciidata = asciidata >> 7; LastByteremain = lastbyterterer = 7dbyterter- 7; asciidata >> 7; LastBytereMain ==dbyterterer - oCyterer -7; asciidata >> 7; LastByTeMain = Ifbyterter = {//# ucs-2-Diverifikasi untuk diuraikan secara normal untuk (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;};Di atas adalah analisis komprehensif decoding Java PDU SMS yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!