#include <stdio.h>
int main(void) {
//shift the array with length *len* *shift* bits to the left
int len = 4, shift = 3;
unsigned char a[] = "kxmo";
unsigned char b[] = " "; //X@hx
int carry = 0, nextCarry;
for(int i = len-1 ; i >= 0 ; i--) {
nextCarry = (a[i] >> (8-shift)) & ((1<<(shift+1))-1);
b[i] = (a[i] << shift) | carry;
carry = nextCarry;
printf("%x %x\n", a
[i
], b
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKSB7CiAgICAvL3NoaWZ0IHRoZSBhcnJheSB3aXRoIGxlbmd0aCAqbGVuKiAqc2hpZnQqIGJpdHMgdG8gdGhlIGxlZnQKICAgIGludCBsZW4gPSA0LCBzaGlmdCA9IDM7CiAgICB1bnNpZ25lZCBjaGFyIGFbXSA9ICJreG1vIjsKICAgIHVuc2lnbmVkIGNoYXIgYltdID0gIiAgICAiOyAvL1hAaHgKCiAgICBpbnQgY2FycnkgPSAwLCBuZXh0Q2Fycnk7CiAgICBmb3IoaW50IGkgPSBsZW4tMSA7IGkgPj0gMCA7IGktLSkgewogICAgICAgIG5leHRDYXJyeSA9IChhW2ldID4+ICg4LXNoaWZ0KSkgJiAoKDE8PChzaGlmdCsxKSktMSk7CiAgICAgICAgYltpXSA9IChhW2ldIDw8IHNoaWZ0KSB8IGNhcnJ5OwogICAgICAgIGNhcnJ5ID0gbmV4dENhcnJ5OwogICAgICAgIHByaW50ZigiJXggJXhcbiIsIGFbaV0sIGJbaV0pOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==