bytes.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { Base64 } from './base64.js';
  2. export function byte2hexStr(byte) {
  3. if (byte < 0 || byte > 255)
  4. throw new Error('Input must be a byte');
  5. const hexByteMap = '0123456789ABCDEF';
  6. let str = '';
  7. str += hexByteMap.charAt(byte >> 4);
  8. str += hexByteMap.charAt(byte & 0x0f);
  9. return str;
  10. }
  11. export function bytesToString(arr) {
  12. let str = '';
  13. for (let i = 0; i < arr.length; i++) {
  14. const one = arr[i].toString(2);
  15. const v = one.match(/^1+?(?=0)/);
  16. if (v && one.length === 8) {
  17. const bytesLength = v[0].length;
  18. let store = arr[i].toString(2).slice(7 - bytesLength);
  19. for (let st = 1; st < bytesLength; st++)
  20. store += arr[st + i].toString(2).slice(2);
  21. str += String.fromCharCode(parseInt(store, 2));
  22. i += bytesLength - 1;
  23. }
  24. else {
  25. str += String.fromCharCode(arr[i]);
  26. }
  27. }
  28. return str;
  29. }
  30. export function hextoString(hex) {
  31. const arr = hex.replace(/^0x/, '').split('');
  32. let out = '';
  33. for (let i = 0; i < arr.length / 2; i++) {
  34. const tmp = `0x${arr[i * 2]}${arr[i * 2 + 1]}`;
  35. out += String.fromCharCode(parseInt(tmp));
  36. }
  37. return out;
  38. }
  39. export function byteArray2hexStr(byteArray) {
  40. let str = '';
  41. for (let i = 0; i < byteArray.length; i++)
  42. str += byte2hexStr(byteArray[i]);
  43. return str;
  44. }
  45. export function base64DecodeFromString(string64) {
  46. return new Base64().decodeToByteArray(string64);
  47. }
  48. export function base64EncodeToString(bytes) {
  49. const b = new Base64();
  50. const string64 = b.encodeIgnoreUtf8(bytes);
  51. return string64;
  52. }
  53. //# sourceMappingURL=bytes.js.map