/**
*把传过来的内容编码
*/
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
}

解决方案 »

  1.   

    不保证正确~
       /** 
    *把传过来的内容编码 
    */
            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 = int.Parse(head.ToString()).ToString();    //十六进制的无符号整数形式返回一个整数参数的字符串表示形式 
                    m_strend = int.Parse(end.ToString()).ToString();      //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 = int.Parse(head.ToString()).ToString();
                    m_strend = int.Parse(end.ToString()).ToString();    //这几句解释上面都有,现在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 
            } 
      

  2.   

    tempchar = (short)m_strContent.charAt(i);  //按位取文本,举个例子,如当前为a,则ASC码为97,下面都用此例 
    ---------------------->
    tempchar = (short)m_strContent[i];
      

  3.   

    把String的S改成小写的s,其他的基本上差不多
      

  4.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        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; //传过来的文本长度 
            char[] m_strContent_item ;
            m_strContent_item = m_strContent.ToCharArray();
            for (int i = 0; i < len; i++)
            {
                tempchar = short.Parse(m_strContent_item[i].ToString()); //按位取文本,举个例子,如当前为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 =   head.ToString();    //十六进制的无符号整数形式返回一个整数参数的字符串表示形式 
                m_strend = end.ToString();      //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 = head.ToString();
                m_strend = end.ToString();   //这几句解释上面都有,现在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 
        } 
    }
    编译可以通过,不知道能不能实现原代码的功能