'Convert Uint8Array into hex string equivalent in node.js

I am using node.js v4.5. Suppose I have this Uint8Array variable.

var uint8 = new Uint8Array(4);
uint8[0] = 0x1f;
uint8[1] = 0x2f;
uint8[2] = 0x3f;
uint8[3] = 0x4f;

This array can be of any length but let's assume the length is 4.

I would like to have a function that that converts uint8 into the hex string equivalent.

var hex_string = convertUint8_to_hexStr(uint8);
//hex_string becomes "1f2f3f4f"


Solution 1:[1]

Another solution:

Base function to convert int8 to hex:

// padd with leading 0 if <16
function i2hex(i) {
  return ('0' + i.toString(16)).slice(-2);
}

reduce:

uint8.reduce(function(memo, i) {return memo + i2hex(i)}, '');

Or map and join:

Array.from(uint8).map(i2hex).join('');

Solution 2:[2]

Buffer.from has multiple overrides.

If it is called with your uint8 directly, it unnecessarily copies its content because it selects Buffer.from( <Buffer|Uint8Array> ) version.

You should call Buffer.from( arrayBuffer[, byteOffset[, length]] ) version which does not copy and just creates a view of the buffer.

let hex = Buffer.from(uint8.buffer,uint8.byteOffset,uint8.byteLength).toString('hex');

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2