hexdump에 대한의문.(Endian과 관련하여)
글쓴이: MackTheKnife / 작성시간: 월, 2003/12/08 - 5:17오후
PC에 설치된 리눅스에서의 문제입니다.
long n=16으로 declare 하면
intel계열이니까 n값은 LittleEndian으로 저장이되겠져.
n은 1000 0000로 저장이 되겠져.
이 n값을 파일에 바이너리로 썼읍니다.
바이너리 파일을 hexdump -x 로 찍으니 담과 같이 나오더군여
0000000 0010 0000
0000004
앞에 자리는 바이트오프셋(?)으로 이해를 했읍니다만.
0010 0000로 나오는건 어떻게 이해를 해야하나여?
hexdump의 매뉴얼을 보니 2바이트씩 읽어서 출력한다는데 2바이트 씩읽으면
1000 0000로 찍혀야되는거 아닌가여?
그리구 추가질문은여 gdb상에서 n값을 찍어보면
0000 0010로 나오는데. 이건 BigEndian으로 저장이 되었을때 값이 아닌가여?
Intel계열이면 little Endian인데 gdb는 BigEndian으로 표현하는 이유가
gdb가 unix용,범용으로 쓰기위해서 내부적으로 BigEndian으로 처리하는것인가여?
Forums:
hexdump 는 다른 OS에서도 있는 od와 같은것이며..[co
hexdump 는 다른 OS에서도 있는 od와 같은것이며..
od -tx2 <file>
와 같은 역할을 하는 군요. ( :) )
아마 원하는 것은
od -tx1 <file>
일 것입니다.
od -tx4 <file>
로 해놓고 보셔도 아실 수 있을 것입니다.
몇 바이트 단위로 끊어서 해석할 것인지에 따라 intel 계열에서는
리틀엔디언이기 때문에, 먼저 나오는 놈이 뒤에 오도록 출력됩니다.
위처럼 만약 4 byte 짜리 데이터를 2 byte씩 끊어서 출력한다면, 참으로 이상한 값을 보게 될 것입니다.
---
http://coolengineer.com
댓글 달기