2013-07-26 5 views
1
Test test; 
Mc_WriteUserData(McHandle, (unsigned char *)&test, sizeof(test)); 

Выше была использована функция C++, я сфокусировал рабочий путь 2ed и хотел имитировать его в android с помощью java. следующий код для Android. i imilate его в функции toBytes(). и хотите использовать его следующим образом:как преобразовать класс android в двоичную последовательность

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

Линия

Test test; 

не создает объект. Он создает только нулевой указатель.

Вы должны использовать вместо:

Test test = new Test(); 

Это создаст объект класса Test и тест будет указывать на этот объект.

+0

извините, это моя ошибка, я исправил его. – George

Смежные вопросы