C :: 1byte씩 메모리 읽기

2009/02/28 10:00

Shinnara 님이 알려주신 1byte씩 메모리를 읽는 방법입니다. 스택이나 정적메모리 영역 등에 이용할 수 있겠네요. unsigned char에 대해서는 거들떠 보지도 않았는데 이번 기회로 참 유용하다는 걸 알게되었습니다.

ptr = (unsigned char *) &fNumber;

이 부분에 대해서는 지난 글에서 설명했었지요. 차이라고는 unsigned * 대신에 unsigned char *을 사용함으로써 4byte가 아닌 1byte씩 끊어 읽을 수 있다는 것입니다.

아래 코드를 한 번에 이해하셨다면 이미 포인터에 대해 이해하셨다고 봐도 될 것 같네요.

#include <stdio.h>

#define TYPE double

int main(void)
{
TYPE fNumber = 0;
unsigned char *ptr;
int i,j;

scanf("%lf", &fNumber);
ptr = (unsigned char *) &fNumber;
for( i=1;i<= sizeof(TYPE);i++)
{
for(j=7; j>=0 ;j--)
printf("%d", (*(ptr-i+sizeof(TYPE)) >> j ) & 0x01);
printf(" ");
}
printf("\n");

return 0;
}


참고 문헌

C :: 실수(Float)를 엿보려면 컴퓨터를 속여라. :: http://hisjournal.net/blog/160
크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 #1. 내 머리 속의 노트/C 언어 마스터 Go! gO! , , , , , ,

Trackback Address:http://hisjournal.net/blog/trackback/175
  1. 포인터는 전혀 사용할 필요가 없는 언어를 사용하다 보니 이제는 가물 가물하군요.

  2. Blog Icon
    아리새의펜촉

    도아 님은 주로 어떤 언어를 사용하시나요? 저 같은 경우는 정보보안전문가가 목표라 C와 PHP를 중점으로 익혀야 할 것 같아요. 지금은 C와 C++, GTK+를 공부중입니다.

[로그인][오픈아이디란?]