OK、THREE.Vector3 の配列を効率的にローカル ストレージに保存したいと思います。javascript は文字列を使用して動作するため、最も効率的なビット比を使用して 32 ビットの浮動小数点数を文字列に変換したいと考えています。つまり、理想的には 32 ビット float = 4 * 8 ビットで、これは C++ などで簡単に実行できます。
問題は、最初のJavascript文字列がUTFであり、パディングが含まれているようです
http://en.wikipedia.org/wiki/UTF-8
次に、現在使用しているコード 0 が変換されてから省略されるため、変換されたバイト長が信頼できなくなります。
文字列.fromCharCode(0) == ''
var float2str = function(num)
{
var bytestream = new Array();
var view = new DataView(new ArrayBuffer(4));
view.setFloat32(0,num);
bytestream.push(view.getUint8(0));
bytestream.push(view.getUint8(1));
bytestream.push(view.getUint8(2));
bytestream.push(view.getUint8(3));
return String.fromCharCode(view.getUint8(0),view.getUint8(1),view.getUint8(2),view.getUint8(3))
}
var str2float = function(str)
{
var bytestream = unpack(str)
var view = new DataView(new ArrayBuffer(4));
view.setUint8(0,bytestream[0]);
view.setUint8(1,bytestream[1]);
view.setUint8(2,bytestream[2]);
view.setUint8(3,bytestream[3]);
return view.getFloat32(0);
}
ありがとう!