2012-03-09 4 views
1

아무도 소켓 프로그래밍을 사용하여 장치에서 데이터를 읽는 방법을 설명 할 수 있습니까? 기기에서 Hexa 형식을 전송하므로 해당 데이터를 읽을 수 없으므로 어떻게하는지 알려주세요.장치에서 16 진수 형식 데이터를 읽는 방법?

StringBuffer instr = null; 
instr = new StringBuffer(); 
buf = new byte[4096]; 
int br = socket.getInputStream().read(buf); 
for(int i =0;i<br;i++){ 
      instr.append((char) buf[i]); 

      } 
data = instr.toString(); 

위의 코드를 사용하고 있으므로 도와주세요.

+0

을 시도 할 수 있습니다? 해당 데이터의 형식에 대해 아십니까? – Thomas

+0

예, 이진 데이터를 받고 있습니다. 기기가 16 진수 형식을 보내고 있지만 읽을 수없는 형식처럼 해당 형식을 읽을 수는 없습니다. –

+0

"Hexa"형식을 설명하십시오. "읽을 수없는"입력 예제를 제공하십시오. – DwB

답변

0

이 코드 당신은 이진 데이터 (즉 바이트)받을 수 있도록 데이터를 해석하는 방법을 모른다 의미

public String convertHexToString(String hex){ 

      StringBuilder sb = new StringBuilder(); 
      StringBuilder temp = new StringBuilder(); 

      //49204c6f7665204a617661 split into two characters 49, 20, 4c... 
      for(int i=0; i<hex.length()-1; i+=2){ 

       //grab the hex in pairs 
       String output = hex.substring(i, (i + 2)); 
       //convert hex to decimal 
       int decimal = Integer.parseInt(output, 16); 
       //convert the decimal to character 
       sb.append((char)decimal); 

       temp.append(decimal); 
      } 
      System.out.println("Decimal : " + temp.toString()); 

      return sb.toString(); 
     }