Added the ability to do circular left shifts

This commit is contained in:
Jonas Köritz 2020-07-04 21:25:48 +02:00
parent c9d9730726
commit e2f369fb4d

View file

@ -28,6 +28,11 @@ class BitShiftLeft extends Operation {
"name": "Amount",
"type": "number",
"value": 1
},
{
"name": "Circular",
"type": "boolean",
"value": false
}
];
}
@ -38,13 +43,21 @@ class BitShiftLeft extends Operation {
* @returns {ArrayBuffer}
*/
run(input, args) {
const amount = args[0];
const amount = args[0],
circular = args[1];
input = new Uint8Array(input);
if (circular) {
return input.map(b => {
return (b << amount) | b >> (8 - amount);
}).buffer;
} else {
return input.map(b => {
return (b << amount) & 0xff;
}).buffer;
}
}
/**
* Highlight Bit shift left