node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »



JavaScript component to convert to/from strings and byte arrays.

AMD/CommonJS compatible.


This library exposes a single function that takes a data parameter and an options object. Set and options.out to the format of the input and desired output. Possible values include:

  • hex: Hex-encoded string; two hexadecimal characters per byte
  • binary: Binary-encoded string (ASCII-encoded)
  • utf8: Binary-encoded string (UTF8-encoded)
  • bytes: Byte array; an array of numbers, each representing one byte of data
  • buffer: A Node.js native Buffer object

The default encoding for options.out is a buffer (buffer). The input format is duck-typed if it's an Array (bytes) or Buffer (buffer) or Number object. If it's a string, it's interpreted as binary unless it's prefixed by 0x (then it's hex). If is set, it overrides the automatic duck-typing of the input variable.

var conv = require('binstring');
console.dir(conv('hello', { in:'binary' })); // No output encoding specified, defaults to Buffer; output: Buffer([104,101,108,108,111]) 
console.dir(conv([104,101,108,108,111], { out:'hex' })); // No input encoding specified, auto-detected as Byte Array; output: 68656c6c6f 
console.dir(conv('hello', { in:'binary', out:'hex' })); // output: 68656c6c6f 


Unit tests are written in Mocha. To run the test suite, checkout the git repository, and from within the base folder run:

$ npm install --dev
$ ./node_modules/mocha/bin/mocha

References on JavaScript UTF-8 forced encoding

(these sources are also included as PDFs in the repo in case the links go dead)


(MIT License)

Copyright 2014, Brooks Boyd