25 lines
747 B
JavaScript
25 lines
747 B
JavaScript
|
/**
|
||
|
* Convert array of 16 byte values to UUID string format of the form:
|
||
|
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||
|
*/
|
||
|
var byteToHex = [];
|
||
|
for (var i = 0; i < 256; ++i) {
|
||
|
byteToHex[i] = (i + 0x100).toString(16).substr(1);
|
||
|
}
|
||
|
|
||
|
function bytesToUuid(buf, offset) {
|
||
|
var i = offset || 0;
|
||
|
var bth = byteToHex;
|
||
|
// join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
|
||
|
return ([bth[buf[i++]], bth[buf[i++]],
|
||
|
bth[buf[i++]], bth[buf[i++]], '-',
|
||
|
bth[buf[i++]], bth[buf[i++]], '-',
|
||
|
bth[buf[i++]], bth[buf[i++]], '-',
|
||
|
bth[buf[i++]], bth[buf[i++]], '-',
|
||
|
bth[buf[i++]], bth[buf[i++]],
|
||
|
bth[buf[i++]], bth[buf[i++]],
|
||
|
bth[buf[i++]], bth[buf[i++]]]).join('');
|
||
|
}
|
||
|
|
||
|
module.exports = bytesToUuid;
|