1.16进制string类型转数组
/// <summary>
///16进制string类型转数组
/// </summary>
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
2.数组转16/10进制字符串
/// <summary>
///数组转16/10进制字符串
/// </summary>
public static string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
//转10进制
//returnStr += Convert.ToInt32(bytes[i]);
//转16进制
returnStr += bytes[i].ToString("X2");//ToString("X2") 转化为大写的16进制
//returnStr = returnStr + " ";
}
}
return returnStr;
}
3.16进制字符串转float字符串
//floatArr截取byte[]arr的数据,起始位为i,截取四个字节
byte[] floatArr = arr.Skip(i).Take(4).ToArray();
string s = byteToHexStr(floatArr);
//string转float
MatchCollection matches = Regex.Matches(s, @"[0-9A-Fa-f]{2}");
byte[] bytes = new byte[matches.Count];
for (int j = 0; j < bytes.Length; j++)
bytes[j] = byte.Parse(matches[j].Value, System.Globalization.NumberStyles.AllowHexSpecifier);
float m = BitConverter.ToSingle(bytes.Reverse().ToArray(), 0);、
//保留两位小数
string number = m.ToString("0.00");
4.16进制转float
/// <summary>
///十六进制转为float
/// </summary>
public static float ToFloat(byte[] data)
{
float a = 0;
byte i;
byte[] x = data;
unsafe
{
void* pf;
fixed (byte* px = x)
{
pf = &a;
for (i = 0; i < data.Length; i++)
{
*((byte*)pf + i) = *(px + i);
}
}
}
return a;
}
5.float转16进制
/// <summary>
/// float转为十六进制
/// </summary>
public static byte[] ToByte(float data)
{
unsafe
{
byte* pdata = (byte*)&data;
byte[] byteArray = new byte[sizeof(float)];
for (int i = 0; i < sizeof(float); ++i)
byteArray[i] = *pdata++;
return byteArray;
}
}
6. 16进制string转int
//s = "7FFF"
int a = int.Parse(s, NumberStyles.AllowHexSpecifier)