Test test;
Mc_WriteUserData(McHandle, (unsigned char *)&test, sizeof(test));
以上是使用c ++函数的方式,我专注于2ed arg的工作方式,并希望用java将其隐藏在android中。 以下是我的android代码。我将它嵌入toBytes()函数中。并希望像这样使用它:
Test test;
test.toByte();
但它不起作用,任何帮助表示赞赏!
final class Kits{
public static byte[] intToByte(int number){
byte[] bytes = new byte[4];
bytes[0] = (byte) (number & 0xff);
bytes[1] = (byte) ((number & 0xff00) >> 8);
bytes[2] = (byte) ((number & 0xff0000) >> 16);
bytes[3] = (byte) ((number & 0xff000000) >> 24);
return bytes;
}
public static byte[] shortToByte(short number){
byte[] bytes = new byte[2];
bytes[0] = (byte) (number & 0xff);
bytes[1] = (byte) ((number & 0xff00) >> 8);
return bytes;
}
}
class Point{
int x;
int y;
int z;
public byte[] toBytes(){
byte[] bytes = new byte[12];
byte[] byte_4 = new byte[4];
byte_4 = Kits.intToByte(x);
bytes[0] = byte_4[0];
bytes[1] = byte_4[1];
bytes[2] = byte_4[2];
bytes[3] = byte_4[3];
byte_4 = Kits.intToByte(y);
bytes[4] = byte_4[0];
bytes[5] = byte_4[1];
bytes[6] = byte_4[2];
bytes[7] = byte_4[3];
byte_4 = Kits.intToByte(z);
bytes[8] = byte_4[0];
bytes[9] = byte_4[1];
bytes[10] = byte_4[2];
bytes[11] = byte_4[3];
return bytes;
}
}
public class Test {
short u16size; /* total class size */
int u32crc; /* checksum, accumulator total*/
boolean bEnable;
Point pisl[] = new Point[1];
byte u8DevType;
public byte[] toBytes(){
byte[] bytes = new byte[19];
byte[] byte_2 = new byte[2];
byte[] byte_4 = new byte[4];
byte[] byte_12 = new byte[12];
byte_2 = Kits.shortToByte(this.u16size);
bytes[0] = byte_2[0];
bytes[1] = byte_2[1];
byte_4 = Kits.intToByte(this.u32crc);
bytes[2] = byte_4[0];
//more repeat
bytes[6] = this.bEnable ? (byte)1 : (byte)0;
byte_12 = pisl[0].toBytes();
bytes[7] = byte_12[0];
//more repeat
bytes[18] = byte_12[11];
bytes[19] = u8DevType;
return bytes;
}
public static void main(String[] args) {
Test test = new Test();
Mc_WriteUserData(test.toBytes(), 19);
}
}
答案 0 :(得分:0)
该行
Test test;
不会创建对象。它只创建一个空指针。
您需要改为使用:
Test test = new Test();
这将创建一个类Test的对象,test将指向该对象。