UNPKG

843 BJavaScriptView Raw
1/** @fileOverview Bit array codec implementations.
2 *
3 * @author Emily Stark
4 * @author Mike Hamburg
5 * @author Dan Boneh
6 */
7
8/** @namespace Arrays of bytes */
9sjcl.codec.bytes = {
10 /** Convert from a bitArray to an array of bytes. */
11 fromBits: function (arr) {
12 var out = [], bl = sjcl.bitArray.bitLength(arr), i, tmp;
13 for (i=0; i<bl/8; i++) {
14 if ((i&3) === 0) {
15 tmp = arr[i/4];
16 }
17 out.push(tmp >>> 24);
18 tmp <<= 8;
19 }
20 return out;
21 },
22 /** Convert from an array of bytes to a bitArray. */
23 toBits: function (bytes) {
24 var out = [], i, tmp=0;
25 for (i=0; i<bytes.length; i++) {
26 tmp = tmp << 8 | bytes[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};