Package Exports
- buffer-string-to-array
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (buffer-string-to-array) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
buffer-string-to-array
Convert Nodejs Buffer.toString()
output to an array.
Usage
This is used in situations where you have saved an array to a database LONGBLOG i.e. using mysqljs/mysql whereby the database stores your original array as the hex string Buffer of the original array's string representation.
Installation on system
npm install buffer-string-to-array
In-code usage
var converter = require(buffer-string-to-array);
// Use the Buffer's toString() method to get the hex string Buffer's string representation of the data
var the_string = database_result[0].original_array.toString();
var newArray = Uint8Array.from(converter.convert(the_string));
Background
In this sort of situation what we want to do is use the (returnd by the DB) Buffer's .toString()
function to get the actual / literal Uint8Array numbers and then we want to do the equivalent of split(",")
so we can pack each string representation of each number into a separate index of an array.
In this specific (unique) situation, we already have our Uint8Array/Buffer, it is just that we have it in the form of a hex string and we want the literal numbers to use in our application.
In this specific situation converting the Buffer to ArrayBuffer (a.k.a view) will just give us a view of each of the hex string values i.e. 48, 49, 46
. For example
let my_array_buffer = database_result[0].original_array.buffer.slice(database_result[0].original_array.byteOffset, database_result[0].original_array.byteOffset + database_result[0].original_array.byteLength);
Even creating a typed array will give that same result. For example
let uint8array = new Uint8Array(database_result[0].original_array.buffer, database_result[0].original_array.byteOffset, database_result[0].original_array.byteLength / Uint8Array.BYTES_PER_ELEMENT);
We don't want that, we want the original data i.e. [0, 50, 100, 200, 245]
For more excellent information about Buffer
/ArrayBuffer
/DataView
/Uint8Array
etc. in Node.js, see this very useful stackoverflow answer.