文字列から正しくないあなたがこれを行うウェブ上のJavaScriptで文字列からUTF-8バッファを作成するには、次のノードにしかしNode.jsのバッファ
buf: ArrayBuffer { byteLength: 6 }
buf.buffer.byteLength: 6
:
var message = JSON.stringify('ping');
var buf = new TextEncoder().encode(message).buffer;
console.log('buf:', buf);
console.log('buf.buffer.byteLength:', buf.byteLength);
このログを私はこれを行う場合の.js:
:var nbuf = Buffer.from(message, 'utf8');
console.log('nbuf:', nbuf);
console.log('nbuf.buffer:', nbuf.buffer);
console.log('nbuf.buffer.byteLength:', nbuf.buffer.byteLength);
は、それがこのログに記録します3210
nbuf: <Buffer 22 70 69 6e 67 22>
nbuf.buffer: ArrayBuffer { byteLength: 8192 }
nbuf.buffer.byteLength: 8192
バイト長は高いです。私はここで何か間違っていますか?
おかげ
なぜ 'byteLength'ですか?これは実装の詳細のようですが、[API](https://nodejs.org/api/buffer.html)には「byteLength」プロパティがないためです。 'nbuf.length'の値は何ですか? – cartant
@cartantありがとう! 'nbuf.length'は' 6'を正しく与えましたが、私はhttp://stackoverflow.com/a/12101012/1828637で 'Buffer'は単に' Uint8Array'であり、 'nbuf.buffer'を実行するとjavascript' ArrayBuffer'には 'byteLength'があります。 nbufのArrayBufferの 'byteLengthf'はどうして8192ですか? – Noitidart
私は、 'Buffer'インスタンスがより大きな基底のバッファから割り当てられていることを覚えているようです。おそらく内部の' buffer'プロパティが参照するものです。しかし、私はNodeの内部動作について専門家はいないので、それに対する決定的な答えは分かりません。 – cartant