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"#1. 내 머리 속의 노트 / C 언어 마스터 Go! gO!" 분류의 다른 글
| C언어 난관 2 [열혈강의 C p.115] char_add.c (8) | 2010/02/23 |
| C :: typedef으로 함수 포인터를... (2) | 2009/08/25 |
| C :: null 포인터, null 문자, 정수 0에 관한 이야기 (2) | 2009/06/24 |
| C :: srand(time(null)) 과 usleep() 함수 (4) | 2009/04/11 |
| C :: 0xE0 == 224 ? (0) | 2009/03/03 |
| C :: 실수(Float)를 엿보려면 컴퓨터를 속여라. (4) | 2009/02/15 |
| C :: 포인터는 포인터일뿐 이상도 이하도 아닙니다. (2) | 2009/02/13 |
| C :: multiple definition 에러 (0) | 2009/02/01 |
| C :: 컴퓨터와 가위바위보를 하자. - 코딩편 (0) | 2009/01/17 |
| C :: 컴퓨터와 가위바위보를 하자. - 설계편 (0) | 2009/01/16 |
Trackback Address:http://hisjournal.net/blog/trackback/175
포인터는 전혀 사용할 필요가 없는 언어를 사용하다 보니 이제는 가물 가물하군요.
도아 님은 주로 어떤 언어를 사용하시나요? 저 같은 경우는 정보보안전문가가 목표라 C와 PHP를 중점으로 익혀야 할 것 같아요. 지금은 C와 C++, GTK+를 공부중입니다.