如何添加3个字节并返回一个整数
本文关键字:返回 一个 整数 3个 何添加 添加 字节 | 更新日期: 2023-09-27 18:13:55
假设我有一个十六进制字符串
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());
,但它不工作。
尝试:
int result = b3 | (b2 << 8) | (b1 << 16);
假设b1、b2、b3是需要转换的byte
值
<<
运算符将其操作数左移指定位数
可以使用BitConverter
类将字节数组转换为整型。
// 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
。
你可以试试:
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;