如何将十进制转换成十六进制存放在字节数组中

我要做一个报文,其中一个就是将一个十进制的实数转换成十六进制放到一个含有2个元素的字节数组中,怎么做

第1个回答  2013-01-06
// 把int转换为hex字符串。
/*
32 : 20
48 : 30
988 : 3DC
102 : 66
255 : FF
65535 : FFFF

Press any key to continue
*/
#include <stdio.h>
char *Dec2Hex(int data, char hex[]) {
int i,n,m;
char ch;
for(n = 0; data > 0; ++n) {
m = data % 16;
if(m > 9) hex[n] = m - 10 + 'A';
else hex[n] = m + '0';
data /= 16;
}
hex[n] = '\0';
for(i = 0; i < n/2; ++i) {
ch = hex[i];
hex[i] = hex[n - 1 - i];
hex[n - 1 - i] = ch;
}
return hex;
}

int main(void) {
int a[] = {65535,255,102,988,48,32};
int i,n = sizeof(a)/sizeof(a[0]);
char s[24];
for(i = n - 1; i >= 0; --i)
printf("%6d : %s\n",a[i],Dec2Hex(a[i],s));
printf("\n");
return 0;
}本回答被提问者和网友采纳
第2个回答  2013-01-06
可以直接用格式控制符在输入输出的时候转换,没必要在存储时转换,毕竟存进去都是二进制。
第3个回答  2013-01-06
sprintf(string,"%x",variable);