C语言 二进制数组转换成16进制整型

就是说现在有一个一维整型数组arry[16],里面每一个元素存放的是0或者1,然后一共16位,怎么把这个数组转换成一个16进制的整型数啊?谢谢啦!!!

第1个回答  推荐于2016-09-09
#include<stdio.h>
char hex[17] = "0123456789ABCDEF";
int main(){
int a[16] = {0}, sum = 1, total = 0, i;
for(i = 0; i < 16; ++i){
scanf("%d", &a[i]);

}
for(i = 0;i < 16; ++i){
if(a[i]){
sum <<= (4-((i+1)%4 ? (i+1)%4 : 4));
total += sum;
sum = 1;

}

if((i+1)%4 == 0){
printf("%c", hex[total]);
sum = 1;
total = 0;
}
}
return 0;
}
自己输入16个数字 然后输出结果 由于我想利用楼上的右移 所以写的复杂了 其实可以用pow的
第2个回答  推荐于2016-08-21
int sum = 0;
char result[16];
for(int i=0; i<16; i++){
sum += array[i] * pow(2, 15 - i);
}
sprintf(result, "%x", sum);本回答被提问者和网友采纳
第3个回答  2011-10-06
先转化为10进制数,然后把10进制转化为16进制数。
第4个回答  2011-10-06
unsigned total=0;
int i;
for(i=0;i<16;i++)
{
total<<=1;
if(array[i])total|=1;

}
相似回答