c# 字符串(含有漢字)轉化為16進制編碼(轉)


public static string Str2Hex(string s) 
        { 
            string result = string.Empty; 
 
            byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(s);     
            for(int i = 0; i < arrByte.Length; i++) 
            { 
                result += "&#x" + System.Convert.ToString(arrByte[i], 16) + ";";        //Convert.ToString(byte, 16)把byte轉化成十六進制string 
            } 
 
            return result; 
        } 
 
 
變成可以在網上傳輸的那種16進制編碼,類似%8D%E2這種?這樣的話,
用System.Web.HTTPUtility.URLEncode()就行。 
  
  光光10進制轉換到16進制的話,可以用   bytes(i).ToString("X"),   
這是將一個字節轉換為一個16進制字符串,"X"表示大寫16進制字符,用"x"可以得到小寫的。   
 
 
參考
字符串(含有漢字)轉化為ascII16進制問題
http://topic.csdn.net/t/20040905/22/3342635.html
 
加碼解碼 
http://xiaodi.cnblogs.com/archive/2005/04/26/145493.aspx 
 
 
 
        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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM