8个十六进制数存在一个数组里
Arry[8]= {0x00,0x00.,0x00,0x03,0x0F,0x93,0x2E,0xBE};
转换成一个unsigned long long型的整数中,a= 0x000000030F932EBE
下面的程序不知道哪儿出了问题,得出的数据是0,求指点。
void HEXtoLongLong( unsigned char * byteArry,unsigned long long x )
{
u8 i;
unsigned char* p = (unsigned char*) &x;
for ( i =0; i
{
*p = *byteArry;
byteArry++;
p++;
}
}
解决方案
20
#include
typedef unsigned char u8;
//8个十六进制数存在一个数组里
unsigned char Arry[8]= {0x00,0x00,0x00,0x03,0x0F,0x93,0x2E,0xBE};
//转换成一个unsigned long long型的整数中,a= 0x000000030F932EBE
unsigned long long a;
void HEXtoLongLongBE(unsigned char *byteArry,unsigned long long *x) {
u8 i;
unsigned char* p = (unsigned char*)x;
for ( i =0; i
*p = *byteArry;
byteArry++;
p++;
}
}
void HEXtoLongLongLE(unsigned char *byteArry,unsigned long long *x) {
u8 i;
unsigned char* p = (unsigned char*)x;
byteArry+=7;
for ( i =0; i
*p = *byteArry;
byteArry--;
p++;
}
}
int main() {
HEXtoLongLongBE(Arry,&a);
printf("0x%016llx\n",a);
HEXtoLongLongLE(Arry,&a);
printf("0x%016llx\n",a);
return 0;
}
//0xbe2e930f03000000
//0x000000030f932ebe
//
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明十六进制数转整数!