gpt4 book ai didi

java - 将字符串(代表十六进制)转换为字节数组的有效方法?安卓

转载 作者:行者123 更新时间:2023-11-29 08:45:48 26 4
gpt4 key购买 nike

我正在从事一个涉及通过无线接收字节数组的项目,Android 应用程序通过 TCP 连接将其读取为字符串:

input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
...
...
//Loop
String read = input.readLine();
//Do something meaningful with String read...

字符串将始终采用固定格式,即前 3 个字符将是 ID,接下来的 20 个字符将是消息数据。字符数不会改变(3+20 个字符 = 23,开始和结束字符为“[”和“]”,因此总共 25 个字符。

应用程序收到的字符串示例为 [01A01020304050A0B0C0D]

  1. ID - 0x01A
  2. 字节0 0x01
  3. 字节 1 0x02
  4. 字节 2 0x03
  5. 字节 3 0x04
  6. 字节 4 0x05
  7. 字节 5 0x0A
  8. 字节6 0x0B
  9. 字节7 0x0C
  10. 字节 8 0x0D

我想我必须使用子字符串操作,但我在将子字符串转换为字节值时遇到了问题(注意:应用程序需要字节 [] 而不是字节 []),我觉得我'我没有有效地做到这一点。我遇到了我一直在使用的这段代码:

public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;

这将返回一个大小为 1 的字节数组,每条消息必须运行 9 次(9 字节)。我有点担心这在处理上可能有点过于费力,尤其是当应用程序非常频繁地接收消息时(大约每秒 10-15 条消息)

我很感激任何想法,非常感谢!

最佳答案

只需使用这个:

byte[] decodedString = Base64.decode(your_string, Base64.DEFAULT);

关于java - 将字符串(代表十六进制)转换为字节数组的有效方法?安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25481690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com