1

JavaScript型付き配列は、エンディアンに関して危険をもたらします。

次のような関数があるとします。

var encodeFloat32 = (function() {
  var arr  = new Float32Array( 1 );
  var char = new Uint8Array( arr.buffer );
  return function( number ) {
    arr[0] = number;
    return String.fromCharCode( char[0], char[1], char[2], char[3] );
  };
}());

これは、ArrayBuffersバイトを「fromCharCode」メソッドに送信する順序が原因でビッグエンディアンシステムで実行する場合、潜在的に危険な関数です。

したがって、コードをプラットフォームに依存しないようにするには、ある種のエンディアンの安全性を作成する必要があります。

JavaScriptで記述されたアプリケーション全体で「エンディアンの安全性」を作成するためのベストプラクティスは何ですか?回避策はありますか?

4

2 に答える 2

1

この投稿によると、エンディアンはJavaScriptで安全です

JavaScriptエンディアンエンコーディング?

littleEndianブール値を提供するため、要件に役立つと思われるDataViewオブジェクト(まだドラフト中)を見てください。

于 2012-11-10T20:24:04.123 に答える
1

最初にチェックするためにJavaScriptでこのような関数を使用します(効果のために文字列を設定します。通常はboolまたは類似のものを使用します):

function checkEndian(){
    var a = new ArrayBuffer(4);
    var b = new Uint8Array(a);
    var c = new Uint32Array(a);
    b[0] = 0xa1;
    b[1] = 0xb2;
    b[2] = 0xc3;
    b[3] = 0xd4;
    if(c[0] == 0xd4c3b2a1) return "little endian";
    if(c[0] == 0xa1b2c3d4) return "big endian";
    else throw new Error("Something crazy just happened"); 
}
于 2013-10-26T11:17:30.347 に答える