C# 数据类型转换(十六进制)
2021-02-09 本文已影响0人
在凌晨失了眠
public static int ByteArrayToInt(byte[] data)
{
string temp = "";
for (int i = 0; i < data.Length; i++)
temp += data[i].ToString("X2");
int value = int.Parse(temp, System.Globalization.NumberStyles.HexNumber);
return value;
}
#region 数值类型转换方法
/// <summary>
/// 10进制string转16进制byte[]
/// </summary>
/// <param name="valStr">10进制string</param>
/// <returns>16进制byte[]</returns>
private byte[] GetHex(string valStr)
{
ushort val = ushort.Parse(valStr);
byte[] hex = BitConverter.GetBytes(val);
return hex;
}
/// <summary>
/// 10进制string转16进制byte[]
/// </summary>
/// <param name="valStr">10进制string</param>
/// <param name="offset">偏移量</param>
/// <returns></returns>
private byte[] GetHex(string valStr, int offset)
{
int val = int.Parse(valStr) - offset;
byte[] hex = BitConverter.GetBytes(val);
return hex;
}
/// <summary>
/// bool[]转换成byte[]
/// </summary>
/// <param name="val">写入的值,bool[]</param>
/// <returns>byte[]</returns>
private byte[] GetHex(bool[] val)
{
string value = "";
for (int i = 0; i < val.Length; i++)
{
if (val[i])
value += "1";
else
value += "0";
}
byte temp = Convert.ToByte(value,2);
byte[] hex = BitConverter.GetBytes(temp);
byte[] res = hex.Take(hex.Length - 1).ToArray();
return res;
}
/// <summary>
/// int[]转换成byte[]
/// </summary>
/// <param name="val">写入的值,int[]</param>
/// <returns>byte[]</returns>
private byte[] GetHex(int[] val)
{
byte[] tempValue = new byte[1024];
int j = 0;
for (int i = 0; i < val.Length; i++)
{
byte[] temp = BitConverter.GetBytes(val[i]);
tempValue[j] = temp[1];
tempValue[j + 1] = temp[0];
j += 2;
}
byte[] res = tempValue.Take(val.Length * 2).ToArray();
return res;
}
#endregion