Octave / matlab:uint8数组浮动

时间:2015-09-08 10:18:08

标签: matlab floating-point octave endianness

我在Octave中从套接字(使用套接字包)接收Big-endian数据。

此数据的某些部分包含float(32位)值,但这些值编码为uint8。

例如:(67 128 0 0)

Octave有没有办法计算相应的浮点数/单值?

1 个答案:

答案 0 :(得分:2)

这样做的方法是使用typecast()

octave> typecast (uint8 ([67 128 0 0]), "single")
ans =    4.6012e-41

如果您有结束问题,请使用swapbytes()

octave> swapbytes (typecast (uint8 ([67 128 0 0]), "single"))
ans =  256

如果您想要更多地使用它,或者需要更多灵活性,请查看bitpack()bitunpack()

octave> data = uint8 ([67  128    0    0   67  127    0    0   67  126    0    0   67  125    0    0])
data =

   67  128    0    0   67  127    0    0   67  126    0    0   67  125    0    0

octave> bitpack (bitunpack (flipud (reshape (data, 4, []))), "single")
ans =

   256
   255
   254
   253