게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
개발자 분들에게 도움 좀 요청 해도 될까요?
게시물ID : computer_37912짧은주소 복사하기
작성자 : 자유해결사
추천 : 0
조회수 : 311회
댓글수 : 5개
등록시간 : 2012/02/28 16:33:34
안녕하세요. 초보 개발자 입니다. 

다름이 아니라. 

디바이스 단에서 특정 값을 받아 오는데요 

16진수로 받아 와서 값을 비트 마스크 하여 

특정 아이템의 색이나 글을 바꿔 주거나 하는건데요. 

디바이스에서 

0x85 
라든지 
0xFF 
0xFE 
이렇게 8비트 값을 받아 와요. 

그럼 제가 만든 java 프로그램에서 그 8비트를 계산하는 방법 인데요. 

통신을 통하여 String 버퍼 에 값을 받아와 헥사 값으로 변환하여 
char 배열에 저장을 합니다. 
여기까지는 아무 이상없이10진수로 자동 변환되어 받아 지는 값을 다시 핵사 값으로 바꾸는거에 성공은 하였습니다. 
char[]  val = Integer.toHexString(Integer.parseInt(sb.toString())).toCharArray();

byte val1 = 0, val2 = 0;

val1 = (byte) val[0];

이렇게 받아 온 값을 val1 이라는 byte 타입의 변수에 저장을 하고요 
/*
if ((val1 & 0x01)>0){       //여기서 비트 마스크로 해당 비트가 0 인지 1 인지 구분합니다.
bit_bt(m_dDemo.b1, true);  //여기서는 해당 메서드를 호출하여 버튼과 블린값을 주어 색을 변경하도록 했 
                                    고요.
 }else{ 
bit_bt(m_dDemo.b1, false);   //여기도 마찬가지 입니다. 해당 비트가 0일때는 false 를 주는거지요.
}
*/

if ((val1 & 0x01)>0){ bit_bt(m_dDemo.b1, true); }else{ bit_bt(m_dDemo.b1, false);}

if ((val1 & 0x02)>0){ bit_bt(m_dDemo.b2, true); }else{ bit_bt(m_dDemo.b2, false);}

if ((val1 & 0x04)>0){ bit_bt(m_dDemo.b3, true); }else{ bit_bt(m_dDemo.b3, false);}

if ((val1 & 0x08)>0){ bit_bt(m_dDemo.b4, true); }else{ bit_bt(m_dDemo.b4, false);}

이렇게 코드를 짜고 난 뒤에 10 이하의 값이 들어오면 비트마스크가 정상 처리가 되는데 

10 이상  
즉 
A,B,C,D,E,F 
값이 들어오면 비트 연산이 제대로 되지 않습니다. 

왜그런지 혹시 아시는분 있으신가요?







전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호