私はバイト配列を持っています。それを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());
'私はバイト配列を持っていますが、16進値に変換してブルートゥース経由で送る必要があります。' AND 'しかし、バイト配列やintだけを書くことができないのでできません。これは矛盾します。あなたの言葉は意味をなさない。しかし実際にバイト配列を直接送信します。それより簡単なことはありません。 – greenapps
@greenapps私はarduinoに送信し、16進値のみを受け取ります。 – Tryam
バイト値の16進表現を文字列に入れることを意味します。だからあなたは文字列を送らなければなりません。文字列を送信する際の問題は何ですか?これは文字列であるため、文字列hexを送信する必要があります。文字列の送信方法がわからない場合は、hex.getBytes()を送信して、それらのバイトを送信することもできます。 – greenapps