用C#实现十六进制字符串转换为ASCII

来源:互联网 发布:中国报刊数据库 编辑:程序博客网 时间:2024/06/07 09:44

最近做串口通信,要用到十六进制批量转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">字符串每个字节之间都应该有空格,大多数的串口通讯资料上面的16进制都是字节之间都是用空格来分割的。</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%

先在另外一个程序员网站写了同样一篇文章,没想到被无故移出了首页。然后写了一封回复邮件,两天都没有给我一个答复。这里再次写出来,方便大家学习!

原创粉丝点击