android如何将类转换为二进制序列

时间:2013-07-26 03:41:40

标签: java android

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);
    }   
}

1 个答案:

答案 0 :(得分:0)

该行

Test test;

不会创建对象。它只创建一个空指针。

您需要改为使用:

Test test = new Test();

这将创建一个类Test的对象,test将指向该对象。