2016-03-20 17 views
0

サイズがnのバッファがあります(サイズが非常に大きいため、インデックスのオーバーフローは発生しません)。私は、バッファの最初の16バイトをハッシュし、次の16バイトをハッシュするためにバッファ内の次の位置としてハッシュ結果を使用したいとします。JavaScriptを数値に変換する

var newLocation = crypto.createHash("sha256").update(buf.slice(0, 16)).digest()

newLocationが実際にバッファタイプである:これは、コードの私の最初の行です。私はbuf.slice(index, 16)にジャンプできるインデックス番号に変換する方法を知りたいですか?

答えて

0

私はあなたが16ビットの整数を必要と仮定します。あなたはBEたい場合は代わりにreadInt16BEを使用し、newLocation = newLocation.readInt16LE(0);

それとも単に、newLocation = crypto.createHash("sha256").update(buf.slice(0, 16)).digest().readInt16LE(0);

を試してみてください。


実際に16バイトを意味する場合、16バイトバッファを整数に変換する方法はわかりません。

+0

ハッシュ値をNビットの数値にマップすることは可能ですか?Nは変わる可能性がありますか?たとえば、256ビットのインデックスが必要な場合は、newLocationから直接変換できますか?ありがとう。 – Luke

+0

16 Bytesは、ハッシュ関数への入力としてのデータの長さです。ハッシュ値の長さは256ビットで、32バイトです。私はダイジェスト( 'バイナリ')を使うと256ビットのバイナリ文字列が得られると思う。しかし、Nが変わる可能性のあるNビット数にハッシュ値をマップすることは可能でしょうか?たとえば、128ビットまたは512ビットのインデックスが必要な場合は、newLocationから直接変換できますか?ありがとう。 – Luke

+0

@LuqinWang可能ですが、Nが16より大きい場合、Nビットの数値は非常に大きいかもしれません。256だけではありません。この数値を配列のインデックスとして使用することを考慮すると、この配列は非常に可能ですあなたのメモリ容量よりも大きい。なぜ私はあなたがそれをしたいのか分かりません。 – Quarter2Twelve

関連する問題