原创 C# 字串符与进制数之间的转换 [NewBit]

2013-12-1 09:34 1908 19 19 分类: 软件与OS

染指C#, 入门时觉得比较方便,但数字,数值,字符串之间的转换有不太容易搞清楚。我整理了一个简单的类,让大家指点一下。我使用静态类,好处就是不用声明,就能直接使用。有了这个类,字串符与16进制之间的那点事就好搞多了。

 
    static class HConvert
    {
 
 
        // 将字串所代表的值转换成数组, 右对齐
        public static byte[] String2Hexbytes(string str)
        {
            str = str.Trim();
            str = str.Replace(" ", "");
 
            int len = str.Length;
            if (len % 2 == 1)
            {
                str = "0" + str;
                len++;
            }
 
            byte[] res;
            if (len == 0)
                return null;
            else
                res = new byte[len / 2];
            string s;
            int i;
            for (i = 0; i < res.Length - 1; i++)
            {
                s = str.Substring(i * 2, 2);
                try
                {
                    res = Convert.ToByte(s, 16);
                }
                catch
                {
                    res = 0x00;
                }
            }
            s = str.Substring(i * 2, str.Length - i * 2);
            try
            {
                res = Convert.ToByte(s, 16);
            }
            catch
            {
                res = 0x00;
            }
            return res;
        }
 
        // 将数组打印为16进制的字串, ch用于指令间隔字符,比如' '空格
        public static string Hexbytes2String(byte[] bytes, char ch)
        {
 
            StringBuilder sb = new StringBuilder();
 
            for (int i = 0; i < bytes.Length; i++)
            {
                sb.Append(bytes.ToString("X2") + ch);
            }
            sb.Remove(sb.Length - 1, 1);
            string s = sb.ToString();
 
            return s;
        }
 
        // 将一串16进制显示的字符转换成其字符串,如41 ->A
        public static string Hexstring2String(string str)
        {
            byte[] bs = String2Hexbytes(str);
            StringBuilder sb = new StringBuilder();
            foreach (byte b in bs)
            {
                char a = (char)b;
                sb.AppendFormat("{0} ", a);
            }
 
            return sb.ToString();
        }
    }
 
当然,还有Convert.toint16, .ToString("X4", var)等方法也是非常非常有用的。
 
 
(尊重劳动成果,转载请注意出处 原方链接
 
 
NewBit Studio 2013
 

文章评论0条评论)

登录后参与讨论
我要评论
0
19
关闭 站长推荐上一条 /2 下一条