所有的分送上,求下面的C++校验和代码转Java代码的实现:
typedef union{
unsigned long sum;
char _char[TypeSize];
}Left_Sum;
unsigned long checksum(void* pBuffer, int iLen)
{
Left_Sum leftsum;
unsigned long checksum;
unsigned long* pType = NULL;
char* pChar = NULL;
int iCount = iLen / sizeof(unsigned long);
int iLeft = iLen % sizeof(unsigned long);
if(NULL == pBuffer)
{
throw ;
}
pType = (type*)pBuffer;
pChar = (char*)pBuffer;
checksum = type(0);
leftsum.sum = type(0);
for(int i=0; i<iCount; ++i)
{
checksum += pType[i];
}
if(iLeft > 0)
{
memcpy(&leftsum._char[TypeSize-iLeft], &pChar[iLen-iLeft], iLeft);
}
return checksum + leftsum.sum;
}
自己顶起
程序不全,无法理解程序全部意思,java没有union的,所以只能从算法上模拟它
另一方法,将你的c函数做成DLL,让JAVA调用
參考我回過的:
http://topic.csdn.net/t/20050922/07/4285687.html
还有,可以利用JNI,直接用JAVA调用C函数
參考我回過的:
http://topic.csdn.net/t/20051007/10/4309986.html
是啊,java是没有union,但应该可以模拟它的算法吧
只要java和c++计算出来的结果是一样的就可以了
但你的程序中
TypeSize,type,都是怎么定义的?如果有这两个,有时间到可以帮你转转试试
这个是最后的代码,
typedef union{
unsigned long sum;