我正在将蓝牙低功耗集成到我的应用程序中。这个模块的目的是,我有一些硬件嵌入式设备。这些设备与BLE硬件连接,并且它将使用BLE Notify API将一些数据通知给我的应用程序。这部分工作正常。
问题:
我的问题是数据是作为字节数组接收的,出于某种原因,我想将其转换为字符串。该消息基于串行通信协议传输。当我从字节转换为字符串时,一些数据不匹配正在发生。 我试过了
byte[] receivedArray = intent.getByteArrayExtra(BLEConstants.EXTRA_DATA);
String data = receivedArray.getBytes() // Tried this way
String data = Arrays.toString(receivedArray ); // Tried this way
然后我再次将字符串转换为字节数组
byte[] b = string.getBytes();
byte[] b = string.getBytes(StandardCharsets.UTF_8); // tried another way
byte[] b = string.getBytes(StandardCharsets.UTF_16); // tried another way
byte[] b = string.getBytes(StandardCharsets.ISO_8859_1); // tried another way
但是结果字节数组与初始字节数组不匹配。
receivedArray!= b。 任何人都有解决方案,请帮助我。
答案 0 :(得分:1)
试试这个
String example = "This is an example";
byte[] bytes = example.getBytes();
System.out.println("Text : " + example);
System.out.println("Text [Byte Format] : " + bytes);
System.out.println("Text [Byte Format] : " + bytes.toString());
String s = new String(bytes);
System.out.println("Text Decryted : " + s);
输出
Text : This is an example
Text [Byte Format] : [B@187aeca
Text [Byte Format] : [B@187aeca
Text Decryted : This is an example
这可能对你有所帮助。
如需更多信息,请参阅here。
答案 1 :(得分:0)
两天前有同样的问题。请参阅此处:Android - How to properly parse a file consisting of bytes delimited with space?。不要使用getBytes()。而是使用Byte.parseByte(String)
而不是
byte[] b = string.getBytes();
使用
byte[] b = Byte.parseByte(data);