我有一个字节数组,我需要将其转换为十六进制值并通过蓝牙发送它们。我发现的一切都是将字节转换为十六进制字符串,但我无法做到,因为我只能写字节数组或int。
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());
}
}
发送的所有内容都可以,我可以编写简单的字节数组。问题在于十六进制值以及如何发送它们。
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: [B@3ae4f930
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 :(得分:1)
您是否尝试过String类的getBytes()
方法?如果这是你需要的,原始对象包装器(Integer
等)上也有类似的方法。