C的byteArray型数据转换为JAVA的int型

来源:互联网 发布:补码如何转换成源码 编辑:程序博客网 时间:2024/06/01 20:48

    由于工作需要,C语言中的byteArray型数据传送给JAVA,然后在JAVA中解析出int型,因为JAVA中byte默认为signed byte,读取的byteArray需要进行转换,才能正常使用,所以,就自己写了一个转换算法,如下 :

    C语言写byteArray操作如下:

int bodySize = 32767;char buf[4] = {0};buf[0] = bodySize;buf[1] = bodySize >> 8;buf[2] = bodySize >> 16;buf[3] = bodySize >> 24;

    JAVA中读取byteArray然后进行转换,转换算法如下:

/* * 将C的byteArray型数据转换为JAVA的int型,转换范围 0~2147483647 (已测试其准确性) */private int cBytesToInt(byte[] data, int offset){        int result = 0;        result += (data[offset+0] & 0x7F);        if ( data[offset+0] < 0 || ((data[offset+0]|0x01) < 0) )                result += 128;                result += (data[offset+1] & 0x7F) * 16 * 16;        if ( data[offset+1] < 0 || ((data[offset+1]|0x01) < 0) )                result += 32768;                result += (data[offset+2] & 0x7F) * 16 * 16 * 16 * 16;        if ( data[offset+2] < 0 || ((data[offset+2]|0x01) < 0) )                result += 8388608;                result += (data[offset+3] & 0x7F) * 16 * 16 * 16 * 16 * 16 * 16;                return result;}

需要负整数转换的,请自行修改算法。


转载请注明来自Master.R(石硕)的CSDN博客:blog.csdn.net/shishuo365  如有疑问请发邮件shishuo365#126.com(将#更换为@)