Source: codecString.js

  1. /** @fileOverview Bit array codec implementations.
  2. *
  3. * @author Emily Stark
  4. * @author Mike Hamburg
  5. * @author Dan Boneh
  6. */
  7. /**
  8. * UTF-8 strings
  9. * @namespace
  10. */
  11. sjcl.codec.utf8String = {
  12. /** Convert from a bitArray to a UTF-8 string. */
  13. fromBits: function (arr) {
  14. var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
  15. for (i=0; i<bl/8; i++) {
  16. if ((i&3) === 0) {
  17. tmp = arr[i/4];
  18. }
  19. out += String.fromCharCode(tmp >>> 24);
  20. tmp <<= 8;
  21. }
  22. return decodeURIComponent(escape(out));
  23. },
  24. /** Convert from a UTF-8 string to a bitArray. */
  25. toBits: function (str) {
  26. str = unescape(encodeURIComponent(str));
  27. var out = [], i, tmp=0;
  28. for (i=0; i<str.length; i++) {
  29. tmp = tmp << 8 | str.charCodeAt(i);
  30. if ((i&3) === 3) {
  31. out.push(tmp);
  32. tmp = 0;
  33. }
  34. }
  35. if (i&3) {
  36. out.push(sjcl.bitArray.partial(8*(i&3), tmp));
  37. }
  38. return out;
  39. }
  40. };