• [학생] 프로그래밍중 비트연산자? 이쪽 관련같은데...16진수->10진수 변환.질문??드립니다! ㅜㅠ2018.11.03 AM 12:03

게시물 주소 FONT글자 작게하기 글자 키우기


예제로...

1F 11 FF AA라는 바이트가 있는데

var temperature = (bytes[2] << 8) | bytes[3] 

이런식으로 해서 

65450이란 값을 얻더군요?

FF AA 를 10진수로 변환하면 65450입니다....

 

이렇게 해야하는데...제가 변환해야하는 값이

 

00 00 00 00 00 01 12 0A 09 02 12 00 2C 1F 11 3F

이중에서 0A 09를 추출을 해야합니다..

위의 값을 근거로 추측해서 뽑아봤는데

var temperature = (bytes[7] << 16 ) | bytes[8];

 

원하는 값인 0A 09의 10진수 값인 2569 가 나오질 않네요...

어떻게 해야할가요?

 

댓글 : 5 개
(bytes[7] << 8) | bytes[8] 인듯 싶네요.
그냥 똑같이 하시면 됩니다
var temperature = (bytes[7] << 8 ) | bytes[8];
부연설명을 조금 해보면
10진수로 1234를 다르게 표현 해 보면
1000 + 200 + 30 +4로 표현 할 수 있는데
원래 예제에서 FF AA를 변환한 방식이 위와 같은 방식 입니다.
FF AA = FF 00 + 00 AA = (FF << 8) + AA
<< 16은 비트를 16개 밀겠다는 의미
16진수로 헷갈리시면
2진수로 변환해서 생각하신다음에 해보세요.
이걸 완벽히 마스터하셔야 나중에 골머리 썩지 않습니다
요즘은 프로그래밍 툴들이 좋아서 포인터니 뭐니 문법 어설프게 안맞는건 다 틀렸다고 지적해주지만 진수변환 같은건 프로그래머의 의도만으로 구현하는 알고리즘의 문제라 잡아주지 않습니다
친구글 비밀글 댓글 쓰기