2

我不明白 MATLAB 中和它们的对立面之间的hex2dec区别hex2num

假设我有一个十六进制值 3FD3B502C055FE00。当我使用hex2dec时,我得到 4.5992e+018 。当我使用hex2num时,我得到 0.3079。这是怎么回事?

4

2 回答 2

3

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

IEEE 754 双精度标准要求使用一位符号、11 位指数和 52 位小数。因此hex2num以这种格式解析十六进制,产生与hex2dec.

于 2012-04-06T02:39:42.830 回答
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 是字符数组,则每一行都被解释为一个双精度数。

正确处理了 NaN、无穷大和 denorms。

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

于 2012-04-06T02:17:13.067 回答