在MATLAB中num2hex vs dec2hex

时间:2012-04-06 02:09:22

标签: matlab hex

我不理解hex2dechex2num之间的区别以及它们在MATLAB中的对立面。

假设我有一个十六进制值,3FD3B502C055FE00。当我使用hex2dec时,我得到4.5992e + 018 。当我使用hex2num时,我得到0.3079。发生了什么事?

2 个答案:

答案 0 :(得分:3)

正如您所注意到的,这些功能的工作方式完全不同。 hex2dec通过原始字节转换将十六进制字符串转换为浮点数,我认为您发现这可以按预期工作。但是,hex2num将十六进制字符串转换为其 IEEE双精度表示。

IEEE 754 double precision standard调用一位符号,一个11位指数和一个52位小数。所以hex2num以这种格式解析十六进制,产生与hex2dec截然不同的结果。

答案 1 :(得分:1)

hex2dec - 将十六进制数字字符串转换为十进制数

描述 d = hex2dec('hex_value')将hex_value转换为其浮点整数表示。参数hex_value是存储在MATLAB字符串中的十六进制整数。 hex_value的值必须小于十六进制10,000,000,000,000。

如果hex_value是一个字符数组,则每一行都被解释为十六进制字符串。

hex2num - 将十六进制数字字符串转换为双精度数字

描述 n = hex2num(S),其中S是表示十六进制数的16个字符的字符串,返回它表示的IEEE®双精度浮点数n。用零填充右边不到16个字符。如果S是字符数组,则每行都被解释为双精度数。

正确处理NaNs,无穷大和变形。

知道3FD3B502C055FE00大于(10,000,000,000,000)16,超出范围。