2016-09-26 73 views
0

我有一个字节数组,我需要将它转换为十六进制值并通过蓝牙发送。我发现的一切都是将字节转换为十六进制字符串,但我不能这样做,因为我只能写入字节数组或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: [[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

'我有一个字节数组,我需要将它转换为十六进制值并通过蓝牙发送它们。'AND'但我做不到,因为我只能写入字节数组或int。'这是矛盾的。你的话没有意义。但确实直接发送字节数组。没有比这更容易。 – greenapps

+0

@greenapps我将它发送给arduino,它只接受十六进制值。 – Tryam

+0

你的意思是你把字节值的十六进制表示放在一个字符串中。所以你必须发送字符串。发送字符串有什么问题?你应该发送字符串十六进制,因为那是字符串。你甚至可以发送hex.getBytes(),然后你可以发送这些字节,如果你不知道如何发送一个字符串。 – greenapps

回答

0

您是否尝试过String类的getBytes()方法?如果这是你需要的,那么Primitive Object Wrappers(Integer等)上也有类似的方法。

+0

我更新了一篇文章 – Tryam