C :: 1byte씩 메모리 읽기

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)를 엿보려면 컴퓨터를 속여라. :: /?p=786

Similar Posts

0 Comments

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다