您的位置:首页 > 编程语言 > Java开发

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

2012-10-25 13:48 351 查看
由于工作需要,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(将#更换为@)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: