短信PUD编码

这个博客主要介绍了短信PDU编码的相关方法,包括短信内容、短信中心号码的编码和解码,以及短信的分割和合并。提供的Java代码实现包含了编码和解码的关键函数,如smsEncodedContent、smsEncodedNumber、decodeSms等,同时也提供了多条短信的解码示例。
摘要由CSDN通过智能技术生成
参考http://hi.baidu.com/mygia/blog/item/18032e7f149be81b29388afa.html  
smsEncodedNumber方法不对,已经按照规则http://wenku.baidu.com/view/bb06353043323968011c92f7.html修改
并且加了短信的分割和合并

import java.io.File;
import java.io.UnsupportedEncodingException;

public class PduCoding {
	public static String decodeSms(String text){
		   StringBuffer sb=new StringBuffer();
		   try{
			   for(int i=0,n=text.length();i <n;i+=4){ 
			      char c  =  (char)Integer.parseInt(text.substring(i,i+4),16); 
			      sb.append(c);
			   }
		   }catch(Exception e){
			   System.out.println("---------decodeSms--text");
			   sb.append(text);
		   }
		   return sb.toString();
	   }
	 
	   private static String smsEncodedContent(String srvContent)
	    {
	     StringBuffer sb = new StringBuffer();
	     int length = srvContent.length();
	     for(int i=0;i<length;i++){
	      String s = srvContent.substring(i, i+1);
	      //是字符,前面两位是00 中文需要四位16进制来表示
	      if(s.getBytes().length==1){
	       sb.append("00");
	      }
	      sb.append(Integer.toHexString(srvContent.charAt(i)));
	     }
	    
	     return sb.toString().toUpperCase();
	    }
        public static String smsEncodedContentLength(int len){  
        	StringBuffer sb=new StringBuffer();
    	     //最后接上内容编码长度的1/2 用16进制的2位来表示
    	     if(Integer.toHexString(len/2).length()<2){
    	      sb.append("0");
    	     }
    	     sb.append(Integer.toHexString(len/2));
    	    return sb.toString().toUpperCase();
        }
	   /**	   	   
	   * 函数说明:
	   *     1,将奇数位和偶数位交换。
	   *     2,短信中心号奇偶数交换后,看看长度是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值