帮忙解决一下这个自定义的函数的功能。谢谢

jk_101 2015-08-29 11:22:21
这个是自己写的自定义的函数,现在不知道他的功能,求解决。
int WHS(int *data)
{
int temp;
temp+=(data[3]/16)*16*16*16*16*16*16*16;
temp+=(data[3]%16)*16*16*16*16*16*16;
temp+=(data[2]/16)*16*16*16*16*16;
temp+=(data[2]%16)*16*16*16*16;
temp+=(data[1]/16)*16*16*16;
temp+=(data[1]%16)*16*16;
temp+=data[0];
return temp;
}
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
宋寒松 2015-08-29
  • 打赏
  • 举报
回复
从功能上来看,就是把data按照4个字节组成一个32位的整数,简单的写法是:

unsigned int WHS(unsigned char* data)
{
	unsigned int temp = data[0];
	temp |= data[1] << 8;
	temp |= data[2] << 16;
	temp |= data[3] << 24;
	return temp;
}
pkuzhx 2015-08-29
  • 打赏
  • 举报
回复
大概是data0~4分别存了一个整数的4个字节,data[i]范围应该都是0~255。 然后这个函数把这4个字节转成一个完整的整数。 但是temp不初始化真的好么?
加等于 2015-08-29
  • 打赏
  • 举报
回复
就是大小端转换吧: 例子: int array[4] = {0x12,0x34,0x56,0x78}; int *data = array; 转成=> temp = 0x78563412
jk_101 2015-08-29
  • 打赏
  • 举报
回复
引用 楼主 jk_101 的回复:
这个是自己写的自定义的函数,现在不知道他的功能,求解决。 int WHS(int *data) { int temp; temp+=(data[3]/16)*16*16*16*16*16*16*16; temp+=(data[3]%16)*16*16*16*16*16*16; temp+=(data[2]/16)*16*16*16*16*16; temp+=(data[2]%16)*16*16*16*16; temp+=(data[1]/16)*16*16*16; temp+=(data[1]%16)*16*16; temp+=data[0]; return temp; }
能具体一点吗?当初写的比较急 谢谢 。这个 有初始值的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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