codecBytes.js 843 B

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