这个是对文本内容得编码,经过编码之后内容可以用手机短信发送,请高手帮忙翻译一下,不懂
public static String UniToChars(String m_strContent)
{
String result=null;
short tempchar,char1,char2;
int len;
byte head,end;
String m_strhead,m_strend,smscode="";
len=m_strContent.length();
for(int i=0;i<len;i++)
{
tempchar=(short)m_strContent.charAt(i);
char1=(short) (tempchar&0xFF00);
char2=(short) (tempchar&0x00FF);
char1=(short) (char1>>8);
byte head1=(byte)char1;
byte end1=(byte)char2;
head=(byte)(head1>>4);
end=(byte)(head1&0x0F);
m_strhead=Integer.toHexString(head);
m_strend=Integer.toHexString(end);
if(m_strhead.length()>1)
m_strhead=m_strhead.substring(m_strhead.length()-1);
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1);
smscode=smscode+m_strhead+m_strend;
head=(byte)(end1>>4);
end=(byte)(end1&0x0F);
m_strhead=Integer.toHexString(head);
m_strend=Integer.toHexString(end);
if(m_strhead.length()>1)
m_strhead=m_strhead.substring(m_strhead.length()-1);
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1);
smscode=smscode+m_strhead+m_strend;
// smscode=smscode+m_strContent.charAt(i);
}
result=smscode;
return result;
}
public static String UniToChars(String m_strContent)
{
String result=null;
short tempchar,char1,char2;
int len;
byte head,end;
String m_strhead,m_strend,smscode="";
len=m_strContent.length();
for(int i=0;i<len;i++)
{
tempchar=(short)m_strContent.charAt(i);
char1=(short) (tempchar&0xFF00);
char2=(short) (tempchar&0x00FF);
char1=(short) (char1>>8);
byte head1=(byte)char1;
byte end1=(byte)char2;
head=(byte)(head1>>4);
end=(byte)(head1&0x0F);
m_strhead=Integer.toHexString(head);
m_strend=Integer.toHexString(end);
if(m_strhead.length()>1)
m_strhead=m_strhead.substring(m_strhead.length()-1);
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1);
smscode=smscode+m_strhead+m_strend;
head=(byte)(end1>>4);
end=(byte)(end1&0x0F);
m_strhead=Integer.toHexString(head);
m_strend=Integer.toHexString(end);
if(m_strhead.length()>1)
m_strhead=m_strhead.substring(m_strhead.length()-1);
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1);
smscode=smscode+m_strhead+m_strend;
// smscode=smscode+m_strContent.charAt(i);
}
result=smscode;
return result;
}
/**
*把传过来的内容编码
*/
public static String UniToChars(String m_strContent)
{
String result=null; // 要返回的结果
short tempchar,char1,char2;
int len;
byte head,end; //这里都是声明变量就不说了,下面再说每个变量的意义
String m_strhead,m_strend,smscode="";
len=m_strContent.length(); //传过来的文本长度
for(int i=0;i <len;i++)
{
tempchar=(short)m_strContent.charAt(i); //按位取文本,举个例子,如当前为a,则ASC码为97,下面都
//用此例
char1=(short) (tempchar&0xFF00); //char1存储该位文字的高8位,a的高8为为0
char2=(short) (tempchar&0x00FF); //char2存储低8位.里面是97,也就是01100001
char1=(short) (char1>>8); //把char1右移8位,此时char1存储的0,
//也就是00000000
byte head1=(byte)char1; //把高位的值给head1,也就是0
byte end1=(byte)char2; //把低位的值给end1,也就是97
head=(byte)(head1>>4); //高位再右移4位,还是为0
end=(byte)(head1&0x0F); //head1也就是0跟00001111按位与,也就是取低四位,还是0
m_strhead=Integer.toHexString(head); //十六进制的无符号整数形式返回一个整数参数的字符串表示形式
m_strend=Integer.toHexString(end); //m_strhead,m_strend都是0
if(m_strhead.length()>1) //如果m_strhead长度大于1
m_strhead=m_strhead.substring(m_strhead.length()-1); //m_strhead长度减1
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1); //同上面解释
smscode=smscode+m_strhead+m_strend; //这里为00
head=(byte)(end1>>4); //head=把end1右移4位,也就是把
//01100001右移4位变成00000110,
//也就6
end=(byte)(end1&0x0F); //end=把end1跟0x0F按位与,也就是把
//01100001&0000ffff=00000001,
//也就1
m_strhead=Integer.toHexString(head);
m_strend=Integer.toHexString(end); //这几句解释上面都有,现在m_strhead=6,m_strend=1
if(m_strhead.length()>1)
m_strhead=m_strhead.substring(m_strhead.length()-1);
if(m_strend.length()>1)
m_strend=m_strend.substring(m_strend.length()-1);
smscode=smscode+m_strhead+m_strend; //刚才上面smscode为00,
//所以smscode=smscode+m_strhead+m_strend=0061
// smscode=smscode+m_strContent.charAt(i);
}
result=smscode; //把smscode的值给result
return result; //返回结果0061
}