2

hex2decMATLABでのとhex2numとその反対の違いがわかりません。

16進値3FD3B502C055FE00があるとします。を使用するhex2decと、4.5992e+018になります。を使用するhex2numと、0.3079になります。どうしたの?

4

2 に答える 2

3

お気づきのように、これらの関数の動作は大きく異なります。hex2dec生のバイト変換によって16進文字列を浮動小数点数に変換しますが、これは期待どおりに機能することがわかったと思います。ただし、hex2num16進文字列をIEEE倍精度表現に変換します。

IEEE 754倍精度標準では、1ビットの符号、11ビットの指数、および52ビットの小数部が必要です。したがってhex2num、この形式で16進数を解析し、とは非常に異なる結果を生成しhex2decます。

于 2012-04-06T02:39:42.830 に答える
1

hex2dec-16進数の文字列を10進数に変換します

説明d=hex2dec('hex_value')は、hex_valueを浮動小数点整数表現に変換します。引数hex_valueは、MATLAB文字列に格納されている16進整数です。hex_valueの値は、16進数の10,000,000,000,000より小さくする必要があります。

hex_valueが文字配列の場合、各行は16進文字列として解釈されます。

hex2num-16進数の文字列を倍精度の数値に変換します

説明n=hex2num(S)、ここでSは16進数を表す16文字の文字列であり、それが表すIEEE®倍精度浮動小数点数nを返します。右側にゼロが埋め込まれるのは16文字未満です。Sが文字配列の場合、各行は倍精度数として解釈されます。

NaN、無限大、およびデノルムは正しく処理されます。

3FD3B502C055FE00が(10,000,000,000,000)16より大きく、範囲外であることを知っています。

于 2012-04-06T02:17:13.067 に答える