将 2 个整数合并为 1 个字节

Merge 2 integers into 1 byte

我从昨天开始就一直在做这方面的工作,但我似乎无法完全理解位移。我想要完成的是,我需要将 2 个数字合并为 1 个字节。第一个数字在第一个四位,第二个在最后四个位。

0001 = 1

0110 = 6

然后让它们成为二进制“00010110”中的 1 个字节。

之后,我也想把1和6分别提取出来。我该怎么做?

我所能做的就是从这里的另一个问题中提取的内容:

int b = Convert.ToByte(value); 
byte[] b1 = new byte[2];
b1[0] = b >> 4;
b1[1] = b & 0x0F;

假设 value10001 = 1 并且 value20110 = 6,您可以使用 OR 操作合并这两个值 |

byte result = 0;
try {
  byte b1 = Convert.ToByte(value1); 
  byte b2 = Convert.ToByte(value2); 
  result = (b1 << 4) | (b2 & 0x0F);
} catch (OverflowException) {
  ... // Handle 'Int too big' situation.
}