Added the ability to do circular left shifts
This commit is contained in:
parent
c9d9730726
commit
e2f369fb4d
@ -28,6 +28,11 @@ class BitShiftLeft extends Operation {
|
|||||||
"name": "Amount",
|
"name": "Amount",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"value": 1
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Circular",
|
||||||
|
"type": "boolean",
|
||||||
|
"value": false
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -38,12 +43,20 @@ class BitShiftLeft extends Operation {
|
|||||||
* @returns {ArrayBuffer}
|
* @returns {ArrayBuffer}
|
||||||
*/
|
*/
|
||||||
run(input, args) {
|
run(input, args) {
|
||||||
const amount = args[0];
|
const amount = args[0],
|
||||||
|
circular = args[1];
|
||||||
|
|
||||||
input = new Uint8Array(input);
|
input = new Uint8Array(input);
|
||||||
|
|
||||||
return input.map(b => {
|
if (circular) {
|
||||||
return (b << amount) & 0xff;
|
return input.map(b => {
|
||||||
}).buffer;
|
return (b << amount) | b >> (8 - amount);
|
||||||
|
}).buffer;
|
||||||
|
} else {
|
||||||
|
return input.map(b => {
|
||||||
|
return (b << amount) & 0xff;
|
||||||
|
}).buffer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user