将2个字节转换为signed int

时间:2016-06-03 14:03:49

标签: c#

他们是否可以将2个字节转换为signed int?我知道我们可以按照以下方式将一个字节转换为signed int

byte B1= 0xFF;
int r = Convert.ToSbyte((sbyte)B1);

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

3 个答案:

答案 0 :(得分:7)

假设第一个字节是msb:

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

否则:

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

编辑:“签名”

答案 1 :(得分:6)

如果是一个字节,只需分配

byte B1 = 0xFF;
int r = B1;

如果是两个字节 - 添加 shift 并指定:

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

int r = (B1 << 8) | B2;

如果需要Int16,则转换:

// -260
short s = (short) ((B1 << 8) | B2);

答案 2 :(得分:1)

查看BitConverter class及其ToInt32()方法。