Source: codecBytes.js

  1. /** @fileOverview Bit array codec implementations.
  2. *
  3. * @author Emily Stark
  4. * @author Mike Hamburg
  5. * @author Dan Boneh
  6. */
  7. /**
  8. * Arrays of bytes
  9. * @namespace
  10. */
  11. sjcl.codec.bytes = {
  12. /** Convert from a bitArray to an array of bytes. */
  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.push(tmp >>> 24);
  20. tmp <<= 8;
  21. }
  22. return out;
  23. },
  24. /** Convert from an array of bytes to a bitArray. */
  25. toBits: function (bytes) {
  26. var out = [], i, tmp=0;
  27. for (i=0; i<bytes.length; i++) {
  28. tmp = tmp << 8 | bytes[i];
  29. if ((i&3) === 3) {
  30. out.push(tmp);
  31. tmp = 0;
  32. }
  33. }
  34. if (i&3) {
  35. out.push(sjcl.bitArray.partial(8*(i&3), tmp));
  36. }
  37. return out;
  38. }
  39. };