对定义为无符号字节位范围的数字执行带符号算术运算

sco*_*ott 5 c#

我有两个字节.我需要将它们变成两个整数,其中前12位构成一个int而后四个构成另一个.我想我可以&&带有0x0f的第二个字节来获得4位,但我不知道如何将它变成具有正确符号的字节.

更新:只是为了澄清我有2个字节

byte1 = 0xab
byte2 = 0xcd
Run Code Online (Sandbox Code Playgroud)

我需要用它来做这样的事情

var value = 0xabc * 10 ^ 0xd;
Run Code Online (Sandbox Code Playgroud)

对困惑感到抱歉.

感谢所有的帮助.

Kon*_*ess 3

好吧,让我们再试一次,知道我们要拍摄什么。我在 VS2008 中尝试了以下方法,似乎工作正常,即两者outOneoutTwo = -1最后。这就是您要找的吗?

byte b1 = 0xff;
byte b2 = 0xff;
ushort total = (ushort)((b1 << 8) + b2);
short outOne = (short)((short)(total & 0xFFF0) >> 4);
sbyte outTwo = (sbyte)((sbyte)((total & 0xF) << 4) >> 4);
Run Code Online (Sandbox Code Playgroud)