프로그래밍 세계/Coding Skill _ 비트연산
bitmask 작성 방법
깡다구짱
2018. 3. 28. 01:04
#include <stdio.h>
#define TODIGIT(x) ((x)>'9'?(x)-'A'+10:(x)-'0')
#define MAX_SIZE (8)
int inputArr[MAX_SIZE] = {6,13,5,1,6,9,2,3};
int encyption(int* arr, int size)
{
int ptr = arr[0];
for (int i = 1; i < MAX_SIZE; i++)
{
ptr = (ptr << 4) | arr[i];
}
return ptr;
}
int decyption(int pack_data, int k)
{
int n = k * 4;
unsigned mask = 0xf;
mask <<= n;
return ((pack_data & mask) >> n);
}
void main()
{
int pack_num = encyption(inputArr, MAX_SIZE);
printf("pack data %d \n", pack_num);
for (int idx = MAX_SIZE - 1; idx >= 0; idx--)
{
int tmp = decyption(pack_num, idx);
printf("%d : %d \n", idx, tmp);
}
printf("\n");
}