2 回答
TA贡献1844条经验 获得超8个赞
ByteBuffer默认情况下具有大端字节顺序,但您的 int 使用小端字节顺序。您必须明确地将 ByteBuffer 转换为小端,例如:
byte[] input = { 45, 0, 0, 0 };
ByteBuffer bb = ByteBuffer.wrap(input).order(ByteOrder.LITTLE_ENDIAN); // <---
int length = bb.getInt();
System.out.println(length); // 45
TA贡献1812条经验 获得超5个赞
你可以这样做(Java):
String input = "45 0 0 0 65 59 78 76 89 89 78 67 56 67 78 89 98 56 67 78 89 90 98 56 67 78 89 90 56 67 78 89 90 56 67 78 89 90 56 67 78 89 90 56 67 78 89 56 67";
String[] arr = input.split(" ");
int i = 0;
int len = Integer.parseInt(arr[i++]) +
256 * (Integer.parseInt(arr[i++]) +
256 * (Integer.parseInt(arr[i++]) +
256 * Integer.parseInt(arr[i++])));
char[] buf = new char[len];
for (int j = 0; j < len; j++)
buf[j] = (char) Integer.parseInt(arr[i++]);
String result = new String(buf);
System.out.println(result);
输出
A;NLYYNC8CNYb8CNYZb8CNYZ8CNYZ8CNYZ8CNYZ8CNY8C
添加回答
举报