2016-05-27 8 views
0

私はNode.JSを使ってファイルに書きたい数値の配列を持っています。バイナリ(UTF-8ではなく)をファイルに書き込む方法

`00000001 00000000` 

そしてません:256

ファイルがバイナリが含まれている必要があります。私は数を持っている場合は

`00000010 00000101 00000110` 

この質問をした理由は、私が読んでいるということですバッファのバイナリ文字列形式が非推奨になりました1

+0

あなたがすべき16ビットの符号なしの値を使用して、例えば

、あなたのコードを含める。どのようにして、望ましくない結果を生み出しているバッファを構築し、書きますか? –

答えて

1

Bufferクラスは直接数値の配列を扱うことができます。

// Old style 
var buffer = new Buffer([ 150 ]); 

// New style 
var buffer = Buffer.from([ 150 ]); 

// Write the buffer to a file. 
// Using `fs.writeFileSync()` just as an example here. 
require('fs').writeFileSync('output.bin', buffer); 

あなたはより大きな数字(バイトではなく)を扱っている場合は、typed arrayを使用する必要があります。二進数/ https://nodejs.org/api/buffer.html

バッファサポートの読み取り、書き込み:

var array = [ 5000, 4000 ]; 
var u16array = Uint16Array.from(array); 
var buffer = new Buffer(u16array.buffer); 

require('fs').writeFileSync('output.bin', buffer); 
+0

256のような倍長整数を書いたり読んだりしたらどうなるでしょうか?今すぐ、その有効数字が切り捨てられています(0と表示されます) – Trajanson

+1

@Trajanson私は自分の答えを更新しました – robertklep

0

は、バッファのdocumentionを見てみてください。

buf.readDoubleBE(offset[, noAssert]) 
buf.readDoubleLE(offset[, noAssert]) 
buf.readFloatBE(offset[, noAssert]) 
buf.readFloatLE(offset[, noAssert]) 
buf.readInt8(offset[, noAssert]) 
buf.readInt16BE(offset[, noAssert]) 
buf.readInt16LE(offset[, noAssert]) 
buf.readInt32BE(offset[, noAssert]) 
buf.readInt32LE(offset[, noAssert]) 
buf.readIntBE(offset, byteLength[, noAssert]) 
buf.readIntLE(offset, byteLength[, noAssert]) 
buf.readUInt8(offset[, noAssert]) 
buf.readUInt16BE(offset[, noAssert]) 
buf.readUInt16LE(offset[, noAssert]) 
buf.readUInt32BE(offset[, noAssert]) 
buf.readUInt32LE(offset[, noAssert]) 
buf.readUIntBE(offset, byteLength[, noAssert]) 
buf.readUIntLE(offset, byteLength[, noAssert]) 
関連する問題