해결된 질문
작성
·
257
1
강사님 추가로 리틀엔디안 > 빅엔디안 변환 과정에서 궁금한 점이 있습니다!
오톱시교재 기준 예시로 99페이지를 보면,
'섹터당 용량'의 리틀엔디안 00 02는 빅엔디안 200(십진수 512)으로 변환하셨고,
'총 섹터수'의 리틀엔디안 00 20 02 00은 빅엔디안 03 20 00(십진수 204,800개)로 변환하신 부분을 확인하였습니다.
차이점으로 빅엔디안 기준, 마지막 값이 00이냐 0이냐 차이인데, 이에따라 값도 달라지는 것으로 알고 있습니다.
어느 상황에서 00, 0 구분하여 사용하는지가 궁금합니다.
답변 1
0
안녕하세요 polyh 님!
결론부터 말씀드리면 0 또는 00으로 표기해야하는 경우가 있는건 아닙니다.
아마 0과 00으로 써있다보니 조금 헷갈리실수 있으실거예요.
(이건 제가 교재에 표현을 일관되게 하지 않아서 인 것 같아 죄송합니다 ㅜ_ㅜ)
대부분 아시는 내용이지만, 이 글을 보실 다른 분들에게 도움이 될수도 있으니 천천히 설명을 한번 드릴게요~
먼저 예를 들어주셧던 Autopsy교재(p99)에서 나와있던 FAT32의 BR구조 중
1. 섹터당 용량
1) BR에서 확인한 값(리틀 엔디안) : 00 02
2) 16진수를 10진수로 계산하기 위해서는 빅 엔디안으로 순서를 바꿔줘야하며, 이때 10진수 기준 한자리씩이 아닌 16진수 기준 1개로 (=00, FF, 1D 등)으로 순서를 변경해줍니다.
예) 16진수 00 02(리틀엔디안) > 16진수 02 00(빅엔디안)
이해되셨을까요? 보통 뒤에서 부터 거꾸로라고 하면 02 00 이 아니라 20 00 으로 헷갈리기 쉽습니다.
반드시 한쌍!으로(쉽게 설명하면 2자리를 한 쌍으로) 바꿔주셔야합니다.
예) 16진수 00 02(리틀엔디안) > 16진수 20 00(빅엔디안)
이렇게 하면 틀린 값이 되어버립니다. 00 02의 뒤에서부터 1개씩 거꾸로 왔기때문이죠.
10진수로 숫자 '1'은 16진수로는 '01'이 됩니다. 그냥 1이 아니라 '01'로 2개의 자리(1의 자리, 16의 자리)로
구성이 되는거죠.
그래서 위의 예인 16진수 00 02(리틀엔디안)은 00 과 02 가 각각 한쌍으로 움직여야합니다.
예) 16진수 00 02(리틀엔디안) > 16진수 02 00 (빅엔디안) = O
이해가 되셨을까요?
그래서 결론적으로 [16진수 00 02(리틀엔디안)] 을 빅엔디안으로 바꾸면 [16진수 02 00(빅엔디안)]이 되며,
이걸 굳이 쪼개보면 [(16의 3제곱자리 X 0) + (16의 제곱자리 X 2) + (16의 자리 X 0) + (1의 자리 X 0)] 으로
[ 0 + (256 X 2) + 0 + 0 ] = [ 0 + 512 + 0 + 0] = 512로 섹터당 용량이 512Bytes 인걸 확인할수 있습니다.
다만 제가 교재에서 [200(빅엔디안)]으로 표현한 것은 16진수 02 00(빅엔디안)에서 처음 02의 '0'을 삭제해도 값은 달라지지 않기때문에 보기에 편하기 위해서입니다.
위의 계산식에서 02의 '0'은 16의 세제곱자리로 0을 곱하기 때문에 결국엔 0이기 때문이죠.
결론적으로 빅엔디안으로 변환한 값의 앞자리가 0이라면 계산할때는 굳이 없어도 된다는 의미입니다!
총 섹터수
1) 16진수 00 20 03 00(리틀엔디안) > 16진수 00 03 20 00(빅엔디안)
마찬가지로 16진수 00 03 20 00(빅엔디안)도 위의 설명처럼 하면 00 03 20 00 = 3 20 00(빅엔디안)
처럼 표현할 수 있습니다.
제가 일관되게 0을 모두 붙였거나, 아니면 모두 제거를 했다면 헷갈리지 않으셨을텐데 죄송합니다 ㅜ_ㅜ
헐...... 죄송합니다.. 명백히 제가 실수하였네요... 02를 20으로 바꿔버려 오인하여 질문 드렸네요...
이틀 전이라 조급하였나 봅니다 ㅠㅠ 잘못봄에도 친절히 상세하게 답변주셔서 감사합니다.
시험날 문제 잘 복기해서, 메일드릴 수 있도록 노력해보셌습니다 편안한 저녁 되십시요!