我想使用经典函数在matlab中将二进制向量转换为带符号的小数。
我有一个向量byte = [1 0 0 0 0 0 1 0]
,
如果我用byte = bi2de(byte, 'left-msb')
将其转换为十进制,我得到130,但如果我在计算器中插入这个字节,我得到-126,ergo签名。
我尝试了byte = typecast(bi2de(byte, 'left-msb'), 'int32')
,但失败了。
我将如何实现这一目标?
答案 0 :(得分:2)
一种方法:
>> typecast(uint8(bi2de(byte, 'left-msb')), 'int8')
ans =
-126
答案 1 :(得分:0)
你需要在一行中完成吗?如果你知道它将被解释为无符号,你可以在if语句中捕获大于127的值。
if (byte > 127)
byte = byte - 256;
end