2016-09-26 8 views
0

私はバイト配列を持っています。それを16進値に変換し、ブルートゥース経由で送信する必要があります。私が見つけたものはすべて、バイトを16進文字列に変換することですが、バイト配列またはintのみを書き込むことができるため、できません。ブルートゥースを通して16進バイトを書くことができません

public static byte[][] commandsArray = new byte[5][5]; 

... 
connectedThr.write(ConstantsVariables.commandsArray[i]); 

... 

public void write(byte[] bytes) { 
    try { 
     mmOutStream.write(bytes); 
    } catch (IOException e) { 
     Log.d("CONNECTTHREAD","Could not write: " + e.toString()); 
    } 
} 

送信がすべて正常であり、単純なバイト配列を書き込むことができます。問題は、16進値とその送信方法です。

UPD: 私はこのコードを試してみましたが、私は、このようなログがあります。

09-26 20:39:57.324 26848-26848/shkatovl.btandroid I/TEST: 28 
09-26 20:39:57.324 26848-26848/shkatovl.btandroid I/TEST___2: [[email protected] 

Formatter formatter = new Formatter(); 
        formatter.format("%02x", ConstantsVariables.commandsArray[i][j]); 
        String hex = formatter.toString(); 
       Log.i("TEST", hex); 
       Log.i("TEST___2", hex.getBytes().toString()); 
+0

'私はバイト配列を持っていますが、16進値に変換してブルートゥース経由で送る必要があります。' AND 'しかし、バイト配列やintだけを書くことができないのでできません。これは矛盾します。あなたの言葉は意味をなさない。しかし実際にバイト配列を直接送信します。それより簡単なことはありません。 – greenapps

+0

@greenapps私はarduinoに送信し、16進値のみを受け取ります。 – Tryam

+0

バイト値の16進表現を文字列に入れることを意味します。だからあなたは文字列を送らなければなりません。文字列を送信する際の問題は何ですか?これは文字列であるため、文字列hexを送信する必要があります。文字列の送信方法がわからない場合は、hex.getBytes()を送信して、それらのバイトを送信することもできます。 – greenapps

答えて

0

あなたは、StringクラスのgetBytes()方法を試したことがありますか?プリミティブオブジェクトラッパー(Integerなど)にも同様のメソッドがあります。

+0

投稿を更新しました – Tryam

関連する問題