我不理解hex2dec
和hex2num
之间的区别以及它们在MATLAB中的对立面。
假设我有一个十六进制值,3FD3B502C055FE00。当我使用hex2dec
时,我得到4.5992e + 018
。当我使用hex2num
时,我得到0.3079。发生了什么事?
答案 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,超出范围。