急....C语言代码转成java代码

huo_shuai163 2012-03-29 09:47:56

void GetChkSum(Int len, PSTR buf, PSTR res)
{
memset(res, 0, 8); //IIN格式的校验码为8字节
for(int i=0; i<len; i+=4)
{
res[0]^=(buf+i)[0];
res[1]^=(buf+i)[1];
res[2]^=(buf+i)[2];
res[3]^=(buf+i)[3];
};
res[0]=~res[0];
res[1]=~res[1];
res[2]=~res[2];
res[3]=~res[3];
// 将16进制数扩展为对应字符数组(如0xE8--->"E8")
for(i = 7; i >= 0; i --)
{
if ( i % 2 ) // 低4位所代表16进制表字符扩展为一个字节
{
res[i] = (res[i/2] & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
else //高4位所代表16进制表字符扩展为一个字节
{
res[i] = ((res[i/2] >> 4) & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
}
}




以上代码用java代码如何编写。。。。

在此感谢大家了。。
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-03-29
  • 打赏
  • 举报
回复
//void GetChkSum(Int len, PSTR buf, PSTR res)
void GetChkSum(int len, char[] buf, char[] res)
{ //不知道这里该对应char数组还是byte数组,如果是对应byte数组,LZ自己把char改成byte就可以了
//memset(res, 0, 8); //IIN格式的校验码为8字节
Arrays.fill(res, 0, 8, (char)0);
for(int i=0; i<len; i+=4)
{
//res[0]^=(buf+i)[0];
//res[1]^=(buf+i)[1];
//res[2]^=(buf+i)[2];
//res[3]^=(buf+i)[3];
res[0]^=buf[i+0];
res[1]^=buf[i+1];
res[2]^=buf[i+2];
res[3]^=buf[i+3];

};
res[0]=~res[0];
res[1]=~res[1];
res[2]=~res[2];
res[3]=~res[3];
// 将16进制数扩展为对应字符数组(如0xE8--->"E8")
for(i = 7; i >= 0; i --)
{
if ( i % 2 ) // 低4位所代表16进制表字符扩展为一个字节
{
res[i] = (char)((res[i/2] & 0x0F) + '0');
if ( res[i] > '9' )
{
res[i] = (char)(res[i] + 'A' - '0' - 10);
}
}
else //高4位所代表16进制表字符扩展为一个字节
{
res[i] = (char)(((res[i/2] >> 4) & 0x0F) + '0');
if ( res[i] > '9' )
{
res[i] = (char)(res[i] + 'A' - '0' - 10);
}
}
}
}
zuxianghuang 2012-03-29
  • 打赏
  • 举报
回复
PSTR 这是什么类型?

出来这个+ 'A' - '0',
其他基本一样能在java上运行

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧