如何添加3个字节并返回整数?

时间:2013-05-16 06:31:53

标签: c# int byte int32

让我们假设我有一个十六进制字符串

  <00> 00 00 04 01 11 00 08 00 06 C2 C1 BC

有了这个,第7个,第8个和第9个八位字节是我需要生成的数字。十六进制是

  

00 06 C2

这个数字原来是1730。通过以下内容,我该如何简化?

byte b1 = 0x00;
byte b2 = 0x06;
byte b3 = 0xC2;

Console.WriteLine(Convert.ToInt32((Convert.ToString(b1, 16)) + (Convert.ToString(b2, 16)) + (Convert.ToString(b3, 16)), 16));

我知道必须有一种更简单的方法。我试过Console.WriteLine((b1 + b2 + b3).ToString());,但它不起作用。

3 个答案:

答案 0 :(得分:8)

尝试:

int result = b3 | (b2 << 8) | (b1 << 16);

假设b1,b2和b3是您需要转换的byte值。

<< operator将其操作数向左移动指定的位数。

答案 1 :(得分:2)

您可以使用BitConverter类将字节数组转换为int。

// Add the bytes to an array, starting with b3, then b2, b1 and 0 to
// make it 4 bytes in total.
byte[] b = new byte[] { 0xC2, 0x06, 0x00, 0x00 };
int i = BitConverter.ToInt32(b, 0);

i现在的值为1730

答案 2 :(得分:1)

你可以试试这个:

    byte b1 = (byte)0x00;
    byte b2 = (byte)0x06;
    byte b3 = (byte)0xC2;
    int i = ((b1 & 0xFF) << 16) | ((b2 & 0xFF) << 8) | (b3 & 0xFF);

修改

    byte b1 = (byte)0x00;
    byte b2 = (byte)0x06;
    byte b3 = (byte)0xC2;
    int i = (b1 << 16) | (b2 << 8) | b3;