ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は浮動小数点数を 16 進文字に変換します_JavaScript スキル

JavaScript は浮動小数点数を 16 進文字に変換します_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:18:211770ブラウズ

最近の組み込みプロジェクトでは WEB 関数が必要だったので、HTML JavaScript を使用していくつかのパラメーター設定関数を実装することを考えました。パラメーターは JavaScript によって 16 進データで生成され、POST を通じてマイクロコントローラーに送信され、マイクロコントローラーの計算能力を最大限に活用するために直接使用されます。ブラウザ。

JavaScript の浮動小数点数のサポートが弱いため、浮動小数点数から 16 進数への変換関数を直接使用すると、C 言語で通常実装される 4 バイトのストレージ表現を実現できません。検索した結果、該当するものは見つかりませんでした。この関数はNode.jsのBufferクラスに実装できるのですが、使い道がなく(マイコンの記憶容量が限られている)、実装方法もわかりません(私は理解できません)。

例:

123.456 ==》 0x42F6E979 C 言語では、浮動小数点数を unsigned int に変換して 16 進数として出力するだけですが、実装します。 JavaScript での処理はそれほど単純ではありません。

幸いなことに、C# で実装された IEEE754 標準浮動小数点数変換コード (IEEE754 浮動小数点数コンバータ (C# 実装)、クリックしてリンクを開きます) をインターネット上で見つけ、変換することでこのタスクを完了しました。このコードを JavaScript に変換します。このためには、コードを投稿して共有してください。

また、16 進数への変換のみを実装し、C# コードにもあるリバーサル (逆コード) は実装していません。

次のコードを使用すると、次のことを実現できます。
コードをコピーします
コードは次のとおりです。

function DecToBinTail(dec, Pad) { var bin = " "; var i ; for (i = 0; i {
dec *= 2;
if (dec>= 1)
{
dec -= 1 ;
bin = "1";

{
bin = "0";
return bin;
}
関数 DecToBinHead(dec,pad)
{
var bin="";
for (i = 0; i {
bin = (parseInt(dec % 2).toString()) bin;
dec /= 2;
return
}
関数get_float_hex(decString)
{
var dec = decString;
varsignString;
var decValue(Math.abs(decString)); .toString().charAt( 0) == '-')
{
sign = 1;
signString = "1";
else
{
符号 = 0;
符号文字列 = "0";
if (decValue==0)
{
指数 = 0; 🎜>else
{
var exponent = 127;
if (decValue>=2)
{
while (decValue>=2)
{
exponent ; >decValue /= 2;
}
}
else if (decValue{
while (decValue {
指数🎜>decValue *= 2;
if (exponent ==0)
}
}
if (exponent!=0) else decValue /= 2 ;

}
var argumentString = DecToBinTail(decValue, 23);
var exponentString = DecToBinHead(exponent, 8); ).toString(16), 8);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。