从xml文件中解析出来的某个属性的值是int型的,假设为1,
现在有一个char[]数组,长度为96,
char[] szch = new char[96]现在为该属性分配了2个字节,分别是szch[8]和szch[9],
现在需要把这个属性值1(int型,值为1,它是4个字节,32位的)
按照2个字节16位的长度放入到这两个位置中,请问在java中如何处理?机器只考虑低字节截取。再详细说下:
1在java中的int型是32位存储的
0000 0000 0000 0000 0000 0000 0000 0001
现在只需要截取后面的0000 0001,分别放入szch[8]和szch[9]中。现在主要是因为需要通过安卓软件通讯,传给单片机处理的,
所以不能把ascii字符直接赋值,假如char[8] = '0',里面实际传的值是0的ascii 32。
多谢!

解决方案 »

  1.   

    public class Test_1 {

    static void setData(byte[] buffer,int offset,short data){
    byte[] src = new byte[]{(byte)(data&0xFF>>>8),(byte)(data&0xFF)};
    System.arraycopy(src, 0, buffer, offset, src.length);
    }
    /**
     * 测试用例
     */
    public static void main(String[] args) throws Exception {
    //首先,Java中char是双字节字符,一个char在内存中占两个字节。
    //所以,char[] 应该该成 byte[]
    byte[] szch = new byte[96];
    int data = 1;
    setData(szch, 8, (short)data);
    System.out.println(toString(szch));
    }
    public static final char [] HEXs = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    public static String toString(byte [] data){
    StringBuilder buff = new StringBuilder(data.length<<1);
    for(int i=0;i<data.length;i++){
    buff.append(HEXs[(data[i]&0xF0)>>4]);
    buff.append(HEXs[data[i]&0x0F]);
    if(i%32==31){
    buff.append('\n');
    }else if(i%8==7){
    buff.append(' ');
    }
    }
    return buff.toString();
    }
    }