用C#實現十六進制字符串轉換為ASCII


最近做串口通信,要用到十六進制批量轉ASCII。網上找了半天C#的代碼,

只有單個轉換的的,沒找到自己需要的代碼。只好自己寫一個了。

代碼如下:

   

 

       //觸發事件

        private void button1_Click(object sender,EventArgs e)

      {

            textBox2.Text= HexStringToASCII(textBox1.Text);

      }

 


        /// <summary>
        /// 將一條十六進制字符串轉換為ASCII
        /// </summary>
        /// <param name="hexstring">一條十六進制字符串</param>
        /// <returns>返回一條ASCII碼</returns>
        public static string HexStringToASCII(string hexstring)
        {
            byte[] bt = HexStringToBinary(hexstring);
            string lin = "";
            for (int i = 0; i < bt.Length; i++)
            {
                lin = lin + bt[i] + " ";
            }


            string[] ss = lin.Trim().Split(new char[] { ' ' });
            char[] c = new char[ss.Length];
            int a;
            for (int i = 0; i < c.Length; i++)
            {
                a = Convert.ToInt32(ss[i]);
                c[i] = Convert.ToChar(a);
            }

            string b = new string(c);
            return b;
        }


        /**/
        /// <summary>
        /// 16進制字符串轉換為二進制數組
        /// </summary>
        /// <param name="hexstring">用空格切割字符串</param>
        /// <returns>返回一個二進制字符串</returns>
        public static byte[] HexStringToBinary(string hexstring)
        {

            string[] tmpary = hexstring.Trim().Split(' ');
            byte[] buff = new byte[tmpary.Length];
            for (int i = 0; i < buff.Length; i++)
            {
                buff[i] = Convert.ToByte(tmpary[i], 16);
            }
            return buff;
        }

 比如輸入:41 42 25

得到結果:AB%

總結:關於十六進制字符串轉ASCII碼,正常的話,幾句代碼就搞定。雖然並不復雜,但是其實代碼還是挺多的,就是因為多了批量兩個字。希望能幫到大家,也歡迎提出寶貴意見,以更優化代碼。


 


免責聲明!

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



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