在MATLAB(r2009b)中,我有一个包含值2147484101的uint32变量.
这个数字(它的4个字节)是在抓取过程中从数字机器视觉相机中提取的.根据我的理解,它具有相机快门速度的单精度形式(应接近1 / 260s = 3.8ms).
如何使用MATLAB中提供的内容将此32位数转换为IEEE单精度浮点表示?
对于变量n中提到的值,我尝试使用nn = dec2hex(n,16)和hex2num(nn)的组合.但似乎hex2num期望十六进制编码是双精度的而不是单一的,因为它在这里.至少我用这种方法得到了奇怪的数字.
有任何想法吗?
编辑:尝试@Matt的回答如下:
typecast(uint32(2147484101),'single') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'single') %# with swapbytes
这使:
ans =
-6.3478820e-043
ans =
-2.0640313e+003
使用:
format hex
typecast(uint32(2147484101),'uint8') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'uint8') %# with swapbytes
给
ans =
c5 01 00 80
ans =
80 00 01 c5
将这些字节输入applet(十六进制)给出了与MATLAB相同的数字.