for (DWORD i = offset; i < offset + len; i++)
buf[i] = ~(buf[i] ^ (xor + 1));
buf[i] = ~(buf[i] ^ (xor + 1));
예를 들어, 위의 경우는 인코딩으로 바꾸면..
for (DWORD i = offset; i < offset + len; i++)
buf[i] = (~buf[i] ^ (xor + 1));
이런데..
shift &= 7;
for (DWORD i = offset; i < offset + len; i++) {
buf[i] ^= xor;
buf[i] = (buf[i] >> shift) | (buf[i] << (8 - shift));
요건, 어떻게 해야 할 지 모르겠음.
XROR인데, 요리조리 바꿔도 인코딩 빌드가 안되네.
도와주십쇼!
buf 변수타입이 뭔지
byte
과제는 아닌거 같으니...
저걸 반대로 하려면 기호를 뭘 추가해야 하는지 모르겠네. 되게 간단할 것 같은데..
과제는 아닌데, cui 빌드 하나 하려는데 막혀서 그럼..
buf[i] = (buf[i] >> shift) | (buf[i] << (8 - shift)); 여기서 각각 시프트 한거 각자 다시 역시프트해서, 유효부분만 mask씌워서 남기고 겹치는 비트가 없는 두개를 다시 or로 합친후 xor 해줌댐
알아냈다.
for (DWORD i = offset; i < offset + len; i++) { buf[i] = (buf[i] << shift) | (buf[i] >> (8 - shift)); buf[i] ^= xor;
위치 바꿨더니 되네. 일단 감사요.
음 byte라 0으로 채우니 마스크 필요없구나. 부호 있으면 >> 할때 1부터 채우니까 조심, 얼마전에 알았음 ㅋㅋ 사실 시프트연산을 부호있는 타입에 할일이 있어야...