Rest Time !/Monologue

난 바본가 봅니다.

포레 2010. 2. 5. 11:06




포인터 부분 다시 공부해야하나 왜이러지 ㅋㅋㅋㅋㅋ

DWORD 형을 BYTE형 4개의 배열로 쑤셔넣는데 약 15분이나 걸렸네 . . .

예를 들면, BYTE Arr[4], DWORD Value 이렇게 있다면

(DWORD *)Arr = &Value 하면 되겠지 하고 했는데 . . . ( 안돼 !! )

이래저래 삽질하다가, 차분하게 생각해보니 . . . .

답은 . . . .

*(DWORD *)Arr = Value . . . .

자연스럽게 참조 하려하다니 . . .

반대로 BYTE 배열을 DWORD에 넣으려면

Value = *(DWORD *)Arr 하면 되지 않을까 싶다.

아주 기본적인건데, 후우 . . .

그 외 비트연산자로도 가능하다.

( BYTE [4] -> DWORD )
Value = 0
Value += Arr[0]
Value += Arr[1]<<8
Value += Arr[2]<<16
Value += Arr[3]<<24

( DWORD -> BYTE [4] )
Arr[0] = (BYTE)(Value&0xFF)
Arr[1] = (BYTE)((Value>>8)&0xFF)
Arr[2] = (BYTE)((Value>>16)&0xFF)
Arr[3] = (BYTE)((Value>>24)&0xFF)

평소엔 비트연산자로 처리해서 느끼지 못한 부분인데 . . .

바이너리 작업은 이래저래 골아프다 . . .