|
제가 하려는 프로그램을 대략 설명 하자면요..
ASCII코드를 16진수로 변환하여 RS232통신으로 날려주고 다시 RS232통신으로 16진수를 받아들여 ASCII코드로
변환하여 출력하는 프로그램입니다..
우선 ASCII코드('A')를 16진수(41)로 변환하여 날려주면 받는 쪽에서는
char buf[0] = '4';
buf[1] = '1';
이렇게 버퍼에 넣어줍니다. 그럼 두개의 버퍼를 8bit로 묶어주기 위해
buf[0]을 4bit Shift시켜준 후 buf[1]을 OR 해줍니다.
char Result = (buf[0] << 4) | buf[1]);
그런후 ASCII로 변환하여 출력하려고 하는데요
shift 연산 후 대문자 'A'도 소문자 'a'도 모두 16진수 71이 되어버리네요..
숫자를 16진수로 변환하여 다시 ASCII로 변환 할 경우에는 숫자가 제대로 나오는데..
문자나 특수문자 입력시에는 Shift연산에서 이상한 값이 들어가게 되는데요..
왜 그런지 고수님들 알려주세요.. 부탁드립니다..
|