如何将十进制转换成十六进制存放在字节数组中
我要做一个报文,其中一个就是将一个十进制的实数转换成十六进制放到一个含有2个元素的字节数组中,怎么做...
我要做一个报文,其中一个就是将一个十进制的实数转换成十六进制放到一个含有2个元素的字节数组中,怎么做
展开
3个回答
展开全部
// 把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;
}
/*
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以直接用格式控制符在输入输出的时候转换,没必要在存储时转换,毕竟存进去都是二进制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sprintf(string,"%x",variable);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询