You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
775 B

  1. /**
  2. * Convert array of 16 byte values to UUID string format of the form:
  3. * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  4. */
  5. var byteToHex = [];
  6. for (var i = 0; i < 256; ++i) {
  7. byteToHex[i] = (i + 0x100).toString(16).substr(1);
  8. }
  9. function bytesToUuid(buf, offset) {
  10. var i = offset || 0;
  11. var bth = byteToHex;
  12. // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
  13. return ([
  14. bth[buf[i++]], bth[buf[i++]],
  15. bth[buf[i++]], bth[buf[i++]], '-',
  16. bth[buf[i++]], bth[buf[i++]], '-',
  17. bth[buf[i++]], bth[buf[i++]], '-',
  18. bth[buf[i++]], bth[buf[i++]], '-',
  19. bth[buf[i++]], bth[buf[i++]],
  20. bth[buf[i++]], bth[buf[i++]],
  21. bth[buf[i++]], bth[buf[i++]]
  22. ]).join('');
  23. }
  24. module.exports = bytesToUuid;