アホクサ エンコード デコード

ビット演算がちと苦手だったので確認、練習という事でちと組んでみた。
どれくらい苦戦したかは以下のコードを見れば分かると思う・・・(爆
C言語初めてエーット・・・1〜2〜3〜4?年?
未だにビット初心者のようで・・・。
テンポラリバッファとか演算回数を減らしたりできるかも!?


///かなりばれ易い?暗号?とも呼べないな・・・。
inline BYTE encode_byte(BYTE a){
BYTE x = 0,y = 0;
//BitODS(a);
x |= (BYTE)((a & 0x0f) << 4);
x |= (BYTE)((a & 0xf0) >> 4);
//BitODS(x);
y |= (BYTE)((x & 0x33) << 2);
y |= (BYTE)((x & 0xCC) >> 2);
//BitODS(y);
/*y |= (BYTE)((x & 0x0C) << 2);
y |= (BYTE)((x & 0x03) >> 2);
BitODS(y);
*/

//y ^= 0x38;
y ^= 0xaa;

return y;
}
///encode_byte()のdecode
inline BYTE decode_byte(BYTE a){
BYTE x = 0,y = 0;
a ^= 0xaa;
//a ^= 0x38;
//BitODS(a);
x |= (BYTE)((a & 0x33) << 2);
x |= (BYTE)((a & 0xCC) >> 2);
// BitODS(x);
/*x |= (BYTE)((a & 0x0C) << 2);
x |= (BYTE)((a & 0x03) >> 2);
BitODS(x);
*/

y |= (BYTE)((x & 0x0f) << 4);
y |= (BYTE)((x & 0xf0) >> 4);
//BitODS(y);

return y;
}