Dr.Dough
Dr.Dough

Reputation: 165

JavaScript Node.Js Buffers to Binary

I am sending and receiving packets with the help of Node.JS Buffers but I am not sure how to convert these buffers into a binary representation. I tried this but it did not work

let buff = Buffer.alloc(10);
buff[0] = 10;
buff[1] = 16;
buff[2] = 20;
buff[3] = 32;
buff[4] = 9;

console.log(buff);
console.log(buff.toString('binary'));

Upvotes: 7

Views: 3543

Answers (3)

Gregory
Gregory

Reputation: 111

Here's how I do it:

const hexChar2bin = c =>
    ({
        0: '0000',
        1: '0001',
        2: '0010',
        3: '0011',
        4: '0100',
        5: '0101',
        6: '0110',
        7: '0111',
        8: '1000',
        9: '1001',
        a: '1010',
        b: '1011',
        c: '1100',
        d: '1101',
        e: '1110',
        f: '1111',
    }[c]);

export default function buf2bin(buf) {
    return buf.toString('hex').split('').map(hexChar2bin).join('');
}

console.log(buf2bin(Buffer.from(' '))); // 00100000 (space character is decimal 32)

Upvotes: 0

Filip Seman
Filip Seman

Reputation: 1714

Simple reduce to string with padStart combination.

const buff = Buffer.alloc(10);
buff[0] = 10;
buff[1] = 16;
buff[2] = 20;
buff[3] = 32;
buff[4] = 9;

const paddedBinString = buff.reduce(
    (acc, byte) => (acc += byte.toString(2).padStart(8, "0")),
    ""
);

console.log(paddedBinString);
// 00001010 00010000 00010100 00100000 00001001 00000000 00000000 00000000 00000000 00000000

Upvotes: 2

aret
aret

Reputation: 146

Acording to the documentation 'binary' is an alias for 'latin1'

If you want a binary representation the easiest way to get a string representation of the buffer with only 1 and 0 is to convert the buffer to hexadecimal his representation, then parse this representation into a BigInt, get the base 2 of the BigInt, and finally pad the string with non significant zeros

function buf2bin (buffer) {
  return BigInt('0x' + buffer.toString('hex')).toString(2).padStart(buffer.length * 8, '0')
}

Upvotes: 4

Related Questions