2011-01-21 2 views
1

이것은 정상적인 체크만큼이나 중요하지 않습니다!빅 엔디안 비트 마스크

당신이 빅 엔디안의 비트 마스크 자바로 4 바이트를 읽는 데 필요한 그 바이트 인 경우 :

× 00, 0x01로, 0xB6, 0x02로.

를 int로 그 것이다 만들기 : 112,130

진은 다음과 같습니다 00000000000000011010011000000010

비트 위치에 영향을주지 않습니다 일련의 바이트의 엔디안, 그것은 것?

감사

토니

답변

1

엔디안 수준은 바이트 순서를 반영하지만 해당 바이트 내의 비트 순서는 반영하지 않습니다.

(2 바이트) 단어 0x9001을 나타내고 싶다고합시다. 바이너리 형식으로 입력하면 1001000000000001이됩니다.

큰쪽 엔디안 컴퓨터에서 바이트를 덤프하면 (10010000 00000001) 표시됩니다.

리틀 엔디안 컴퓨터에서 바이트를 덤프하면 (하위 주소에서 상위 주소로) 나는 00000001 10010000이 표시됩니다.

+0

해당 정보 주셔서 감사합니다. 나는 내가 잘못되고있는 비트 마스크가 아니라는 느낌을 가지고있다. 내가 처음에 읽고있는 데이터보다 가능성이 높다. 고마워. – Tony

0

당신이주의해야 할 유일한 것은 당신이 "자바로 4 바이트를 읽기"어떻게 정확히 - 그건 어디 엔디안 문제 그리고 당신은 엉망이 그것을 할 수있는 (DataInputStream 큰 엔디안을 가정) . 읽은 값이 int 112130이되면 사용자가 설정됩니다.

1

일반적으로 읽고있는 것이 전체 바이트를 제공하는 경우 해당 바이트를 구성하는 비트 순서에 대해 걱정할 필요가 없습니다. 즉, 중요한 바이트 순서 일뿐입니다. 당신이 올바르게 가정 할 때.

개별 비트의 "엔디안"에 대해 걱정해야 할 시간은 전체 바이트가 아닌 실제로 비트를 읽거나 쓰는 위치입니다 (예 : 비트에서 작동하는 압축 알고리즘을 작성하는 경우). 수준이라면 비트를 쓸 순서를 결정해야합니다.)

관련 문제