参考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,短信中心号奇偶数交换后,看看长度是否为偶数,如果不是,最后添
短信PUD编码
最新推荐文章于 2022-04-15 08:27:17 发布