一部の値が半精度の浮動小数点(つまり、float16
)であるバイナリファイルをアンパックする必要があります。"uint16"の値を半精度の浮動小数点(float16)に変換するにはどうすればよいですか?
仕様API dataView.getUint16(0)
を使用してバイナリストリームから読み込みました。
uint16
フォーマットback to
float16`フォーマットの数値をJavaScriptで変換するにはどうすればよいですか?
一部の値が半精度の浮動小数点(つまり、float16
)であるバイナリファイルをアンパックする必要があります。"uint16"の値を半精度の浮動小数点(float16)に変換するにはどうすればよいですか?
仕様API dataView.getUint16(0)
を使用してバイナリストリームから読み込みました。
uint16
フォーマットback to
float16`フォーマットの数値をJavaScriptで変換するにはどうすればよいですか?
Javascriptのすべての数値変数は、64ビット浮動小数点数(double型)として扱われます。
これをDataViewから変数に読み込むと、その形式になります。
dv.setUint16(0, 12);
dv.getUint16(0); // >>> 12
しかし、あなたはそれを自分でクランプについて注意する必要があります:
DataViewオブジェクト上のset*
メソッドを使用すると、さまざまなパックされたフォームを使用してArrayBufferにバイトを設定することができ
dv.setUint16(0, -12);
dv.getUint16(0); // >>> 65524
のために署名済みint16:
dv.setInt16(0, -12);
dv.getInt16(0); // >>> -12
"float16"をuint16と読んでみると、float64は魔法では得られません。浮動小数点16の1はバイナリ「0 01111 0000000000」です。これはuint16として読み込むと「15,360」と読み込まれます。 –
これは変数に読み込まれるとバッキングストアがfloat64になり、それを変換する必要はありませんそれを署名する。 –
はい、問題は変換しています –
[こちら](https://en.wikipedia.org/wiki/Half- precision_floating-point_format) - ちなみに –
を調べることができるかどうかを調べるには、javascriptには「float16」がないので、実際のfloat16に変換することはありません。これを 'Number'またはイベントa float32またはfloat64(Number) - あなたがしたいことが "float16"であれば、値を操作して "float16"を格納/書き込み/送信します - まず、uint16にあるバイナリデータを数値に変換する必要がありますそれを操作してからそれをuint16に変換してください –