染指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条评论)
登录后参与讨论