10

バイトのチャンクを読み取り、それらを数値に変換する必要がある場合、node.js には や などの関数がbuffer.readInt32BE()ありbuffer.readInt32LE()ます。

ファイルの最初の 4 バイトが整数であることがわかっている場合、システムのエンディアンがわからない場合、どの関数を使用すればよいですか? ビッグエンディアンかリトルエンディアンか?

高速グーグル ( stackoverflow ) を実行すると、C で次のようにしてエンディアンをテストできます。

if ( htonl(47) == 47 ) {
  // Big endian
} else {
  // Little endian.
}

readInt32BE と readInt32Le を適切に使用するために、node.js のエンディアンをテストするにはどうすればよいでしょうか?

4

3 に答える 3

2

完全に可能であり、型付き配列を使用している場合は合理的ですらあります。node.jsでシステムがリトルエンディアンであるかどうかを確認するための簡単なモジュールを作成しました。

https://npmjs.org/package/is-little-endian

于 2013-02-25T19:01:07.130 に答える
-1

ホスト システムのエンディアンをテストする必要はありません。

バッファがどのバイトオーダーを使用してフォーマットされているかを調査し、正しいバリアントを使用して再度読み取る必要があります。

于 2012-04-25T13:48:54.587 に答える