변환후 화면에 문자 출력부분은 어떻게 되어 있나요?
앞에서 마스킹 했어도 출력전에 마스킹을 한번 더 해주시는게 좋을것 같네여
마이콤 컴파일러의 경우 char를 1바이트 8비트로 선언하면 그 이상은 잘라버리는데
pc에서 vc나 c++bulider 에서는 16비트나 32비트로 되는 부분 때문에 변환후 앞에
쓰레기 값이 있을때가 생기더군요
그리고 같은 변수에서 마스킹이나 비트 회전시킬때 이상이 생길수 잇으니 결과는 다른 변수로 받아보세요
===================================
정태 님이 쓰신 글 :
: 안녕하세요. 먼저 답변 감사드립니다.
:
: 소스 코드를 첨부 드리자면,
:
: long temp;
: char sResult[255];
:
: temp = 0x00ff & sResult2p[3];
: temp <<= 8;
: temp = temp | (0x00ff & sResult2p[4]);
: temp <<= 8;
:
: 위와 같이 사용 하였습니다.
:
: sResult의 경우 0xC0의 값으로 확인 되었습니다.
:
: 그래도 이상한 값이 나오다보니..
:
: 오늘하루도 화이팅 입니다.
:
: 금목암[손효철] 님이 쓰신 글 :
: : 소스를 못봐서 뭐라고 얘가하긴 부족한데
: : 제 경우에는 일단 받은 문자를 변환전에 0xff로 마스크해서 1바이트로 만든후
: : 변환했습니다
: : 저와 같은 방식인지 모르겟는데 한번 적용해보세요
: :
: : =========================================
: : 정태 님이 쓰신 글 :
: : : 안녕하세요. 볼포에서 항상 많은 도움을 받고 있는 사람입니다.
: : :
: : : 계측 장비 통신 프로그램을 만들다 보니 문제가 생겨 이렇게 글을 남깁니다.
: : :
: : : 계측장비에서 REAL 64 포맷으로 받다보니 16진수를 10진수로 변환 하는 코드 질문입니다.
: : :
: : : 첨부 파일에 보시면, sResult2 배열의 3,4,5,6,7,8,9,10 번째 배열 까지의 16진수를 10진수로 변환 하는 과정인데...
: : :
: : : 이상한 값이 나와서 이렇게 질문 드립니다.
: : :
: : : 혹,,, 답변을 달아 주신다면 감사하겠습니다....
|