(以下OPによって明確化により廃止)
parseInt
(MDN | spec)あなたのためにそのフォーマットを用いて、16進数を解析完全に満足している:
var hexValue = parseInt("0x43480000");
console.log(hexValue);
最初に0x
が表示され、16進数と見なされます。接頭辞("43480000"
)を持たない16進数の文字列がある場合は、parseInt
に基数16(16進数)を使用するように指示するには、parseInt(str, 16)
を使用します。しかし、あなたは接頭辞を持っているので、必要はありません。
結果はJavaScript番号になります。by definitionは "double"(IEEE-754倍精度バイナリ浮動小数点数)です。
あなたは0x43480000
が200.0として出て来てほしいと述べました。つまり、実際にはの括弧を解析していないことを意味します。つまり、IEEE-754浮動小数点数のビットパターンを含む文字列を16進数で表し、等価なIEEE-754浮動小数点数を取得しようとしています。これは「ヘックスを解析する」とはまったく異なります。
あなたが参照したcalculatorは、IEEE-754 -precision 2進浮動小数点値で動作します。 0x43480000ビットパターンは、double -precisionバイナリ浮動小数点では200ではありません。しかし、0x40690000はです。それを行うには私の知っている
のみ簡単方法がDataView
である:
var dv = new DataView(new ArrayBuffer(8));
dv.setUint32(0, parseInt("0x40690000"));
var num = dv.getFloat64(0)
console.log(num);
あなたは単一精度のバージョン(0x43480000)を変換したい場合は、Iドンあなたのためにそれを行うことになるものは何もないと思います。仮数と指数のビットを分離し、拡大を行い、次に上記を行います。
しかし、それはそれfloatまたはdoubleことはありません。 –
@HarmjanKors:そうです。 JavaScriptの数値はすべてdouble型(IEEE-754倍精度バイナリ浮動小数点数)です。私は言っただろうが、私はあなたがあなたの質問を表現する方法からそれを知っていたと思った。 :-) –
はい私は知っている:)しかし、 'parseInt(" 0x43480000 ")'の結果は '1128792064'ですが、私は値' 200.0'を受け取りたいと思います(例:http://www.h-schmidt .net/FloatConverter/IEEE754.html)。 –