本文主要是介绍C的byteArray型数据转换为JAVA的int型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于工作需要,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(将#更换为@)
这篇关于C的byteArray型数据转换为JAVA的int型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!