将二进制转换为带符号

时间:2014-05-04 00:30:54

标签: matlab binary decimal signed

我想使用经典函数在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'),但失败了。

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

一种方法:

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

ans =

 -126

答案 1 :(得分:0)

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

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