2016-06-01 4 views
0

新しい日、新しい問題。Android - スペースで区切られたバイトで構成されるファイルを適切に解析するにはどうすればよいですか?

私はセンサーから生のバイトのストリームを取得するAndroidアプリで作業しています。そのようなパケットはそれぞれ19バイト長です。次のようにそのデータを格納するために、私はString.valueOf()を使用します。書き込んだファイルは、データと一致しているので、

String str = String.valueOf(values[0]) + " "; 

for (byte i = 1; i < values.length; i++) { 
    str = str + values[i] + " "; 
} 
try { 
    txtWriter.write(str); 

} catch (IOException ioe) { 
    Toast.makeText(ConnectActivity.this, "IOException occured.", Toast.LENGTH_SHORT).show(); 
} 

の保存には、支障を与えないように思われます。ただし、後でファイルを取得する場合:

bufferedReader = new BufferedReader(new FileReader(fileName)); 
splitData = bufferedReader.readLine().split(" "); 
for (int i = 0; i < splitData.length; i += 19) { 
    for (int j = 0; j < 19; j++) { 
     currentArray[j] = splitData[i+j].getBytes()[0]; 

    } 
    processRXData(currentArray); 
} 

private void processRXData(byte[] data) { 

    ByteBuffer bb = ByteBuffer.allocate(20); 
    bb.order(ByteOrder.LITTLE_ENDIAN); 
    bb.put(data, 1, 18); 

    **print**(bb.getShort(0), bb.getShort(2), bb.getShort(4)); 

    **print**(bb.getShort(12), bb.getShort(14), bb.getShort(16)); 
} 

印刷された値が正しくありません。例えば

は、値{1,98,1,-49,-3,37,-3,-11,-1,71,0,-111,-1,-12,-1,-3,-1,4,0}しかしながら{12601,11565,11571}{11565,11565,12340}{354,-561,-731}{-12,-3,4}

現在の結果を与えることが期待されます。

私はそれがgetBytes()の仕事であると予想していますが、回避策は見つかりません。 可能な解決策はありますか?

答えて

0

String.getBytesはBytes.toStringと同じではありません。あなたは、文字列にバイトを変換するときには、文字の数を受け取る、例えばバイト値127は3文字である[ '1'、 '2'、 '7']バイトコード[49、50、55]と

byte b = 127; 

    System.out.println(b + ""); // 127 

文字列 "127" .getBytes()はこの配列[49、50、55]

System.out.println(Arrays.toString("127".getBytes())); // [49, 50, 55] 

正しく読み取るに値あなたは次のコードが必要を返します。

byte[] bytes = "127".getBytes(); 

    String value = ""; 
    for (byte part : bytes) { 

     value += (char)part; 
    } 

    System.out.print(value); // 127 

あなたが必要なバイト値を受信したい場合この文字列を解析する:

byte b = Byte.parseByte(value); 
+0

ありがとう、私がしたのは、 'splitData [i + j] .getBytes()[0]'を 'Byte.parseByte(splitData [i + j]) 'に変更することでした。私は一日ほとんど困惑していました! – Sriram

関連する問題