2012-03-09 8 views
1

ソケットプログラミングを使用してデバイスからデータを読み取る方法を説明できます。デバイスがヘキサフォーマットを送信しているため、そのデータを読み取ることができないので、その方法を教えてください。デバイスから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

"ヘキサ"フォーマットを説明してください。 「読むことができない」入力の例を挙げてください。 – 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(); 
     } 
関連する問題