将Hex转换为单精度

时间:2011-08-26 15:54:52

标签: matlab floating-point hex precision ieee-754

我正在努力将32位十六进制表达式转换为Matlab中的单个精度数字。

num2hex函数适用于两者。例如,

>> b = 0.4

b =

   0.400000000000000

>> class(b)

ans =

double

>> num2hex(b)

ans =

3fd999999999999a

>> num2hex(single(b))

ans =

3ecccccd

但是,这不起作用。 hex2num函数将十六进制表达式转换为双精度表达式。所以,

>> b = 0.4

b =

   0.400000000000000

>> num2hex(single(b))

ans =

3ecccccd

>> hex2num(ans)

ans =

    3.433227902860381e-006

Matlab只需填充零,使其成为64位十六进制。有没有办法执行此转换?

2 个答案:

答案 0 :(得分:10)

我发现使用MATLAB中的内置函数

可以实现这一点
%#Let's convert 0x40100000 to Single Precision Float (should equal 2.25)

tempHex = '40100000';

tempVal = uint32(hex2dec(tempHex));

tempFloat = typecast(tempVal,'single')
%#result is 2.25

答案 1 :(得分:5)

内置hex2num似乎无法实现,但幸运的是,您可以在此处获得hex2numhexsingle2num)的单精度版本:{{3} }