将2个字节转换为signed int

pra*_*tom 2 c# int

他们以任何方式将2个字节转换为signed int吗?我知道我们可以通过以下方式将一个字节转换为signed int

byte B1= 0xFF;
int r = Convert.ToSbyte((sbyte)B1);
Run Code Online (Sandbox Code Playgroud)

但签署int的2个字节呢?例如-260是0xFC,0xFE

Kev*_*vin 8

假设第一个字节是msb:

byte b1 = 0xff;
byte b2 = 0xff;
var test = BitConverter.ToInt16(new byte[] { b1, b2 }, 0);
Run Code Online (Sandbox Code Playgroud)

除此以外:

byte b1 = 0xff;
byte b2 = 0xff;
var test = BitConverter.ToInt16(new byte[] { b2, b1 }, 0);
Run Code Online (Sandbox Code Playgroud)

编辑:"签名"


Dmi*_*nko 7

如果是一个字节,只需指定:

byte B1 = 0xFF;
int r = B1;
Run Code Online (Sandbox Code Playgroud)

在两个字节的情况下 - 添加shift和assign:

byte B1 = 0xFE;
byte B2 = 0xFC;

int r = (B1 << 8) | B2;
Run Code Online (Sandbox Code Playgroud)

如果Int16需要然后施放:

// -260
short s = unchecked((short) ((B1 << 8) | B2));
Run Code Online (Sandbox Code Playgroud)