我想在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