codecString.js 940 B

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