[완료] unsigned long 포인터로 할당 받은 메모리에서 1바이트 씩 주소 증가시키는 방법은?
글쓴이: neobug / 작성시간: 금, 2009/01/09 - 1:17오후
컴퓨터를 제법 오래 공부했다고는 하지만 이런 것도 모르고 있는게 심히 좌절입니다 OTL
좋은 방법을 아시는 분은 도움의 손길을...ㅎㅎ
unsigned int datasize = 1024; unsigned short wordData = 0; unsigned long *stream; unsigned char offset=0; stream = (unsigned long *)malloc(datasize); // (중략) // stream에 데이터를 채워 넣는 코드 부분 // // ########## 아래는 stream 데이터(초반부) ########## // 97 bd ee 10 78 9e be b8 17 84 34 1b dc 72 11 c5 // 94 f1 5c 81 bb 78 3f 97 ec cd 57 cd 52 42 4c fb // ......(메모리 상태의 데이터 입니다) // ############################################### offset = stream[0]; //offset = 0x10 // 11번째 바이트 0x1b와 12번째 바이트 0xdc를 획득하고 싶다!! // 하지만 stream은 unsigned long* 선언이므로 stream+1을 하면 // 4바이트씩 주소가 증가 된다 // offset을 4로 나눈다거나 하지 않고 원하는 워드 값을 얻어오는 // 방법은???? memcpy(&wordData , stream+offset, 2);
Forums:
unsigned char *p =
감사합니다
프로그램을 날로 공부했다는게 여실이 드러나네요.
기초를 다시 다져야 할 듯 합니다.
...
어째서 offset이 0x10이 되는지 모르겠네요. 만약 32비트 머신을 가정하고 int와 long이 다 4바이트라고 하면 offset의 값은 little endian machine에서 0x10eebd97, big endian이면 0x97bdee10이 될 텐데요?
지적 감사합니다
한 마디로 잘못 쓴거죠 ㄷㄷ;
unsigned long 에서 unsigned char로 수정 했습니다
댓글 달기