将整数数组转换为字节数组

时间:2015-01-14 07:51:38

标签: java android

我目前正在编写一个通过回调与Windows驱动程序交互的小应用程序。此应用程序记录各种XY坐标和按钮状态,以整数表示。应用程序将通过本地网络将此数据发送回调用。我对数据包的体验至少可以说,但我至少知道我需要将值转换为字节数组。

例如,下面是两组数组:

int[][] axes = { {75, 150}, {0, 40} };

int[] buttons= {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1}

我将如何将这些值转换为字节数组?另外,补偿有什么用?我环顾四周,我无法理解它。

2 个答案:

答案 0 :(得分:2)

将int转换为byte []。 创建这个功能:

byte[] toBytes(int i)
{
  byte[] result = new byte[4];

  result[0] = (byte) (i >> 24);
  result[1] = (byte) (i >> 16);
  result[2] = (byte) (i >> 8);
  result[3] = (byte) (i /*>> 0*/);

  return result;
}

在int []的循环中运行,对每个单元调用该函数并将结果添加到一个字节数组。

答案 1 :(得分:1)

您需要循环遍历数组的所有元素,然后逐个提取每个整数的字节。假设一个整数是4个字节,你可以使用位移操作并从整数中提取每个8位。之后,使用字节数据类型可以创建数组。

e.g。 a = 10110011 11101010 11110101 11010100 //二进制文件

      byte 3    byte 2  byte 1  byte 0

字节0 = a& 0xFF的

字节1 =(a>> 8)& 0xFF

字节2 =(a>> 16)& 0xFF的

字节3 =(a>> 24)& 0xFF的

要转换回整数,对于bytes数组中的每组4个字节:

数字= (byte3<< 24)| (byte2<< 16)| (字节1<< 8)|字节0