public class Utils
{
//byte[]数组转16字符串
public static string ByteToHexStr(byte[] by)
{
StringBuilder ret = new StringBuilder();
foreach (byte b in by)
{
//{0:X2} 大写
ret.AppendFormat("{0:X2}" + " ", b);
}
return ret.ToString();
}
//删除字符串里指定的字符
public static string detchar(string str, string c)
{
int i = str.IndexOf(c);
while (i >= 0)
{
str = str.Remove(i, 1);
i = str.IndexOf(c);
}
return str;
}
//根据指定的标记符,分隔字符串,并返回字符数组
public static string[] SplitPage(string source, string split)
{
int len = split.Length;
ArrayList al = new ArrayList();
int start = 0; //开始位置
int j = -1; //匹配索引位置
while (true)
{
j = source.IndexOf(split, start);
if (j > -1)
{
al.Add(source.Substring(start, j - start));
int s = j - start;
start = j + len;
}
else
{
al.Add(source.Substring(start));
break;
}
}
string[] result;
if (al.Count == 0)
{
string[] r = new string[1];
r[0] = source;
result = r;
}
else
{
string[] r = new string[al.Count];
for (int i = 0; i < al.Count; i++)
{
r[i] = al[i].ToString();
}
result = r;
}
return result;
}
//删除各种括号
public static string[] delstr(string str)
{
str = detchar(str, "\"");//删除各种符号
str = detchar(str, "{");
str = detchar(str, "}");
str = detchar(str, "[");
str = detchar(str, "]");
str = str.Replace("data:", "");
return SplitPage(str, ",");
}
//16进制字符串转Byte[]
public static byte[] hexStringToByte(string hex)
{
hex = hex.Replace(" ", "");//去掉空格
if (hex.Length % 2 == 1)
{
hex = hex.Insert(hex.Length - 1, "0");
}
byte[] b = new byte[hex.Length / 2];
for (var x = 0; x < b.Length; x++)
{
var i = Convert.ToInt32(hex.Substring(x * 2, 2), 16);
b[x] = (byte)i;
}
return b;
}
//十六进制字符串转普通字符串
public static string HexStringToDec(string hex)
{
return System.Text.Encoding.Default.GetString(hexStringToByte(hex));
}
//普通字符串转16进制字符串
public static string DecStringToHex(string dec)
{
return ByteToHexStr(System.Text.Encoding.Default.GetBytes(dec));
}
//将字符串转换成16进制
public static string StrToHex(string s)
{
StringBuilder result = new StringBuilder();
byte[] arrByte = System.Text.Encoding.GetEncoding("GB18030").GetBytes(s);
// byte[] arrByte = System.Text.Encoding.Default.GetBytes(s);
for (int i = 0; i < arrByte.Length; i++)
{
//Convert.ToString(byte, 16)把byte转化成十六进制string
result.Append(System.Convert.ToString(arrByte[i], 16).ToUpper().PadLeft(2, '0'));
result.Append(" ");
}
return result.ToString();
}
}