在C#中将二进制(16)转换为int,结果相同

时间:2014-09-12 12:15:11

标签: c# sql-server-2012 type-conversion

我在表'Chip'中有二进制(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

1 个答案:

答案 0 :(得分:3)

-116241336只是被视为原始小端整数的最后4个字节; 0xF9124C48。所以:只使用的最后4个字节。不需要ASCII:

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