小迪的Blog
学习ing...(注明:该Blog中的任何信息都非原创,只是作为个人的阅读笔记)
posts - 144,comments - 52,trackbacks - 0

        public string EncodingSMS(string s)
        
{
            
string result = string.Empty;

            
byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(s);    
            
for(int i = 0; i < arrByte.Length; i++)
            
{
                result 
+= System.Convert.ToString(arrByte[i], 16);        //Convert.ToString(byte, 16)把byte转化成十六进制string
            }


            
return result;
        }


        
public string DecodingSMS(string s)
        
{
            
string result = string.Empty;

            
byte[] arrByte = new byte[s.Length / 2];
            
int index = 0;
            
for(int i = 0; i < s.Length; i += 2)
            
{
                arrByte[index
++= Convert.ToByte(s.Substring(i,2),16);        //Convert.ToByte(string,16)把十六进制string转化成byte
            }

            result 
= System.Text.Encoding.Default.GetString(arrByte);

            
return result;

        }


加码解码的规则如下:
加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符“41”以代表字符“A”。
对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。


原理:
            string aaa = "AB测试";
            
byte[] bbb = System.Text.Encoding.Default.GetBytes(aaa);
            
string ccc  = System.Text.Encoding.Default.GetString(bbb);

            
for(int i = 0; i < bbb.Length; i++)
            
{
                Response.Write(System.Convert.ToString(bbb[i], 
16));
            }
                 
            Response.Write(ccc);
posted on 2005-04-26 12:12  小迪  阅读(...)  评论(...编辑  收藏