이게 바로 little endian인가요?
스콜피온
이게 바로 little endian인가요?저는 901-1234-5678아 phoneNum[20]에 저장될 때
phoneNum[0]==8
phoneNum[1]==7
phoneNum[2]==6
phoneNum[3]==5
phoneNum[4]==-
이렇게 될 줄 알았습니다.
제가 생각한대로 저장이 된다면 big endian이고,
스크린샷 처럼 된다면
little endian이 되는건가요? - 첫 번째 질문
만약에 맞다면 endian을 바꿀 수가 있나요? 아님 시스템이 그래서 고정이 되버리기에 못바꾸나요 -두 번째 질문
예를들어 디버깅이 little endian으로 한다면 big endian으로 바꿔서 해보고 싶은 경우요.
-
쇼콜라데
아.. char는 기본으로 int로 전달되나보군요. 몰랐던 부분인데 알려주셔서 감사합니다.
-
소라
넵 감사합니다 ^^
-
스릉흔드
#include stdio.h
int main() {
unsigned d = 0x78456123;
unsigned char *arr = (unsigned char*)&d;
int i_converted[4];
/* char를 %d로 printf로 출력하려 하면 큰일나므로 일단 int형으로 형변환 */
/* 왜인지는 이제는 아실듯하여 생략합니다. */
//i_converted[0] = (int)arr[0];
//i_convert -
가온길
ㅠ;; 넵 좀 더 공부한 뒤에 다시 볼게요 ㅠㅠ;;
-
빛길
그냥 little endian이나 big endian이나 그 구분이 byte 단위로 일어나기 때문에
byte 크기의 char형의 포인터로 형변환을 시킨것입니다. -
딥공감
트리거수다님 정말 감사합니다.
감은 왔지만,
코드 예제라든지
그리고 위키 링크는 제 수준이 ;;; 좀 더 실력을 쌓고 볼게요 ㅠㅠ;;
코드에서도
이건 좀 다른 질문인데요;
unsigned d = 0x78456123;
char *arr = (char*)&d;
이 부분 곧, char *이 부분때문에 다른 분께도 질문드렸다가 이해를 못했는데,
형변환을 char * 로 하는 이유가 뭔지... 잘 모르겠습니다 ㅠㅠ...
곧 왼쪽 char*를 맞춰