C++ 바이트 패턴 출력
조회수 1203회
int dwValue = 33; 에 대해선 0x21000000
int dwValue = -33; 에 대해선 0xdfffffff 형식으로 출력하고 싶습니다.
void show_binary(char* pAddr, int size)
{
cout << "0x";
char dwBuffer[20];
int dwValue;
for (int i = 0; i < size; i++) {
dwValue = pAddr[i];
sprintf(dwBuffer,"%02X", dwValue);
cout << dwBuffer;
}
cout << endl;
}
결과가 밑에처럼 나오네요.. 디버깅해보니깐 dwValue가 음수가 나올때 이상하게 나오는 것 같아요.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
인텔 CPU 기반의 윈도우에서 작업하는 듯 합니다.
단순히 리틀엔디안으로 변환하면 됩니다.
[cling]$ #include<cstdio> [cling]$ int i = 33 (int) 33 [cling]$ int di = -33 (int) -33 [cling]$ printf("0x%x\n", ((i>>24)&0xff) | ((i<<8)&0xff0000) | ((i>>8)&0xff00) | ((i<<24)&0xff000000)) 0x21000000 [cling]$ printf("0x%x\n", ((di>>24)&0xff) | ((di<<8)&0xff0000) | ((di>>8)&0xff00) | ((di<<24)&0xff000000)) 0xdfffffff
- char[], int, float, double, char 에 대해서 표현해야되는데 원리를 알아야 응용을 할 것 같은데.. 알 수 없는 사용자 2018.12.5 18:50
- bit shift 로 swap 한거에요.bit shift 에 대해서 학습을 해보세요. 정영훈 2018.12.5 19:04
댓글 입력