2016-12-01 6 views
0

in javascript numbers are always allocated as double precision floats。圧縮せずにバイナリとしてこれらの膨大な量を送信していない場合や、メモリを節約する必要がない場合は、これは問題ありません。これらの数字を小さくする必要がある場合は、どうすればよいですか?javascriptは小さな符号なし数値に浮動小数点数を割り当てます

明らかな目標は、可能な限り小さなバイトサイズ、たとえば208:1バイト、504:2バイトに数値を格納することです。ビットサイズの最小数は、208:8ビット、504:9ビットなど、さらに優れています。

例:

//myNetwork is a supposed network API that sends as binary 

    var x = 208; 

    myNetwork.send(x); // sends 01000011010100000000000000000000 
    myNetwork.send(x.toString()); //sends 001100100011000000111000 

ありtyped arraysもあるが、それはすでにBLOBまたはファイルでない場合、型指定された配列に回すことは難しいです。 Javascriptの特定のネットワークAPIでは、生データは文字列として表示されることがあります。

答えて

0

var receivedString = "Ð"; 

var decodedNum = receivedString.charCodeAt(0); //208 

挙げ列復号化方法は、符号化

//myNetwork is a supposed network API that sends as binary 

var x = 208; 

myNetwork.send(String.fromCharCode(x)); //sends 11010000 , also known as Ð 

これは8ビットのみであるのに対し、24ビットです。

この方法の欠点は、バイトサイズ未満の値が必要な場合は、明らかにいくらかの無駄があることです。たとえば、512ビットの値を9ビットで格納できるはずですが、Unicode文字はすべてバイトサイズであるため、65535ビットの16ビット(2バイト)にする必要があります。しかし、あなたが値の全範囲を利用するなら、それはうまくいきます。

関連する問題