我写代码的时候要用到,但是搜了很多感觉不是很齐全,所以写出来供大家参考。
十六进制byte[]转整数(包括正数和负数):
byte[] a = new byte[2];a[0] = 0x00;a[1] = 0x64;int b = Convert.ToInt16(ToHexString(a, 2), 16);//100
private string ToHexString(byte[] bytes, int length) // 0xAE 0x00 0xCF => "AE00CF"{string hexString = string.Empty;if (bytes != null){StringBuilder builder = new StringBuilder();for (int i = 0; i < length; i++){builder.Append(string.Format("{0:X2}", bytes[i]));}hexString = builder.ToString().Trim();}return hexString;}
整数(包括正数和负数)转十六进制byte[]
byte[] a = new byte[2];if (b < 0){string c = NegativeToHexString(b);a[0] = Convert.ToByte(c.Substring(0, 2), 16);a[1] = Convert.ToByte(c.Substring(2, 2), 16);}else{a[0] = (byte)(b >> 8);a[1] = (byte)b;}
/// <summary>/// 负数转十六进制/// </summary>/// <param name="iNumber"></param>/// <returns></returns>private string NegativeToHexString(int iNumber){string strResult = string.Empty;if (iNumber < 0){iNumber = -iNumber;string strNegate = string.Empty;char[] binChar = Convert.ToString(iNumber, 2).PadLeft(16, '0').ToArray();foreach (char ch in binChar){if (Convert.ToInt32(ch) == 48){strNegate += "1";}else{strNegate += "0";}}int iComplement = Convert.ToInt32(strNegate, 2) + 1;strResult = Convert.ToString(iComplement, 16).ToUpper();}return strResult;}