将二进制转换为有符号十进制



我想在matlab中使用经典函数将二进制向量转换为有符号十进制。

我有一个向量byte = [1 0 0 0 0 0 1 0]

如果我用byte = bi2de(byte, 'left-msb')把它转换成十进制,我得到130,但如果我把这个字节插入计算器,我得到-126,因此有符号。

我试过byte = typecast(bi2de(byte, 'left-msb'), 'int32'),但失败了。

我该如何做到这一点?

一种方法:

>> typecast(uint8(bi2de(byte, 'left-msb')), 'int8')
ans =
 -126

你需要在一行中完成吗?如果您知道它将被解释为unsigned,则可以在If语句中捕获大于127的值。

if (byte > 127)
    byte = byte - 256;
end

最新更新