我正在制作一個與藍牙設備通信的 Android 應用程式。我正在向所選特征寫入特定訊息,如下所示:
byte[] clearDataset = new byte [0x0A];
Log.d("uploadDataset", "Message: " Converters.byteArrayToHexString(clearDataset, 0, clearDataset.length));
writeCharacteristic(Converters.byteArrayToHexString(clearDataset, 0, clearDataset.length), Constants.DIAG_WRITE);
我的轉換函式如下所示:
public static String byteArrayToHexString(byte[] bytes, int startingByte , int endingByte) {
byte[] shortenBytes = Arrays.copyOfRange(bytes, startingByte, endingByte);
final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
byte[] hexChars = new byte[shortenBytes.length * 2];
for (int j = 0; j < shortenBytes.length; j ) {
int v = shortenBytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 1] = HEX_ARRAY[v & 0x0F];
}
StringBuilder output = new StringBuilder();
for (int i = 0; i < new String(hexChars, StandardCharsets.UTF_8).length(); i = 2) {
String str = new String(hexChars, StandardCharsets.UTF_8).substring(i, i 2);
output.append((char) Integer.parseInt(str, 16));
}
return output.toString();
}
我試圖弄清楚為什么在這種情況下我的轉換輸出看起來像這樣:
D/uploadDataset:訊息:
這很奇怪,因為當我使用相同的轉換函式來轉換我作為藍牙通知接收到的值時,它作業得非常好。歡迎提出問題所在的任何建議
uj5u.com熱心網友回復:
扔掉你的 StringBuilder 東西。
return new String(hexChars);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/399673.html
