我在表'Chip'中的Binary(16)列的值为0xE1FC2E6F8674B7B9045C1104F9124C48,在另一个表中,我的列chip_i是具有相同值的整数类型(但在int中)= -116241336。
我正在使用SQL Server 2012。

如何在C#中将0xE1FC2E6F8674B7B9045C1104F9124C48转换为-116241336?

我试图这样转换它:

  string hexString = "0xE1FC2E6F8674B7B9045C1104F9124C48";
  byte[] hexByte = Encoding.ASCII.GetBytes(hexString);
  var chip_i = BitConverter.ToInt32(hexByte, 0);


但结果是826636336

最佳答案

-116241336只是将最后4个字节视为原始的Little-Endian整数; 0xF9124C48。因此:仅使用最后4个字节。无需ASCII:

int chip_i = Convert.ToInt32(hexString.Substring(hexString.Length - 8, 8), 16);

09-27 03:39