// 주어진 크기만큼 공백을 삽입한다.

static void Blank(int n)

{

int k = 16-n;

k = k*3 + (n<7?1:0);

for(int i=0; i<k; i++)

printf(" ");

}



// 바이너리 데이터를 정규 포멧으로 출력한다.

void PrintBinary(BYTE* buffer, int length)

{

int row = length/16;

int col = length%16;

int i, j;

int prev = 0;

for(i=0; i<=row; i++)

{

int end = 16;

if(i == row)

end = col;

else

end = 16;



printf("%06X  ", i*16);



for(j=0; j<end; j++)

{

printf("%02X ", buffer[i*16+j]);

if(j==7)

printf(" ");

}

Blank(end);

printf("    ");

for(j=0; j<end; j++)

{

char ch = buffer[i*16+j];

char ch1 = buffer[i*16+j+1];

if(isprint(ch))

printf("%c", ch);

else

{

if((ch >> 7) & 0x01 == 1 && (ch1 >> 7) & 0x01 == 0 && prev == 0)

{

printf("%c", ch);

prev = 1;

}

else

{

if(prev == 1)

{

printf("%c", ch);

prev = 0;

}

else

printf(".");

}

}



if(j==7)

printf(" ");

}



printf("\n");

}

}



// 바이트 데이터를 이진수 문자열로 출력한다.

void PrintByte(BYTE ch)

{

for(int i=0; i<8; i++)

printf("%c", (ch>>(7-i)&0x01)?'1':'0');

+ Recent posts