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"0x08 과거의 글모음 / 내 머리 속의 노트" 분류의 다른 글
| 블로그(텍스트큐브) 서버를 직접 만들어보기 - OS & Package 설치 | 2011/02/16 |
| C/Linux :: 리눅스에서 파일 덤프... dump.c | 2010/12/05 |
| C/Linux :: ls -l 을 수행하는 ll.c | 2010/10/30 |
| python :: Socket Communication with Thread | 2010/10/10 |
| 리눅스(우분투)에서 부경대학교 무선랜 접속하기 | 2010/07/19 |
Trackback Address:http://hisjournal.net/blog/trackback/175
포인터는 전혀 사용할 필요가 없는 언어를 사용하다 보니 이제는 가물 가물하군요.
도아 님은 주로 어떤 언어를 사용하시나요? 저 같은 경우는 정보보안전문가가 목표라 C와 PHP를 중점으로 익혀야 할 것 같아요. 지금은 C와 C++, GTK+를 공부중입니다.