utils.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. var utils = exports;
  3. function toArray(msg, enc) {
  4. if (Array.isArray(msg))
  5. return msg.slice();
  6. if (!msg)
  7. return [];
  8. var res = [];
  9. if (typeof msg !== 'string') {
  10. for (var i = 0; i < msg.length; i++)
  11. res[i] = msg[i] | 0;
  12. return res;
  13. }
  14. if (enc === 'hex') {
  15. msg = msg.replace(/[^a-z0-9]+/ig, '');
  16. if (msg.length % 2 !== 0)
  17. msg = '0' + msg;
  18. for (var i = 0; i < msg.length; i += 2)
  19. res.push(parseInt(msg[i] + msg[i + 1], 16));
  20. } else {
  21. for (var i = 0; i < msg.length; i++) {
  22. var c = msg.charCodeAt(i);
  23. var hi = c >> 8;
  24. var lo = c & 0xff;
  25. if (hi)
  26. res.push(hi, lo);
  27. else
  28. res.push(lo);
  29. }
  30. }
  31. return res;
  32. }
  33. utils.toArray = toArray;
  34. function zero2(word) {
  35. if (word.length === 1)
  36. return '0' + word;
  37. else
  38. return word;
  39. }
  40. utils.zero2 = zero2;
  41. function toHex(msg) {
  42. var res = '';
  43. for (var i = 0; i < msg.length; i++)
  44. res += zero2(msg[i].toString(16));
  45. return res;
  46. }
  47. utils.toHex = toHex;
  48. utils.encode = function encode(arr, enc) {
  49. if (enc === 'hex')
  50. return toHex(arr);
  51. else
  52. return arr;
  53. };