我正在努力将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位十六进制。有没有办法执行此转换?
答案 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
似乎无法实现,但幸运的是,您可以在此处获得hex2num
(hexsingle2num
)的单精度版本:{{3} }