我目前正在编写一个通过回调与Windows驱动程序交互的小应用程序。此应用程序记录各种XY坐标和按钮状态,以整数表示。应用程序将通过本地网络将此数据发送回调用。我对数据包的体验至少可以说,但我至少知道我需要将值转换为字节数组。
例如,下面是两组数组:
int[][] axes = { {75, 150}, {0, 40} };
int[] buttons= {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1}
我将如何将这些值转换为字节数组?另外,补偿有什么用?我环顾四周,我无法理解它。
答案 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