自己写个代码测试一下嘛(虽然你也说了“然后就调用了一下,如……”,但根本没听懂你在干什么)
程序代码:
int WHS(short int *data)
{
int temp;
temp=0;
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;
}
#include <stdio.h>
int main( void )
{
{
short data[4] = { 0x01, 0x23, 0x45, 0x67 };
int temp = WHS( data );
printf( "%X\n", temp );
}
{
short data[4] = { 0x0123, 0x4567, 0x89AB, 0xCDEF };
int temp = WHS( data );
printf( "%X\n", temp );
}
return 0;
}
输出为
67452301
78F06823
可见,就是将 { 0x01, 0x23, 0x45, 0x67 } 拼接成 0x67452301
但对于 { 0x0123, 0x4567, 0x89AB, 0xCDEF } 的拼接结果,就它妈的乱套了,也不知道这个WHS函数是哪个傻逼写的
程序代码:
int WHS( const void* data )
{
int temp = 0;
for( size_t i=0; i!=sizeof(temp); ++i )
temp |= ((const unsigned char*)data)[i] << (i*8);
return temp;
}
#include <stdio.h>
int main( void )
{
char data[4] = { 0x01, 0x23, 0x45, 0x67 };
int temp = WHS( data );
printf( "%08X\n", temp );
return 0;
}