中易网

两字符合并为十六进制

答案:3  悬赏:50  
解决时间 2021-03-13 08:36
如字符为 01 ,十六进制为 0x01
最佳答案
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getCharValue(char ch)
{
if(ch >= '0' && ch <= '9')
return ch-'0';
else if(ch >= 'a' && ch <= 'z')
return ch-'a' + 10;
else if(ch >= 'A' && ch <= 'Z')
return ch-'A' + 10;
}

int Merge(char *str_data,int ** merged_data)
{
int str_data_len = strlen(str_data);
int i;
// 字符数为奇数个,不合并
if(str_data_len%2!=0)
{
*merged_data = NULL;
return 0;
}
// 分配空间
*merged_data = (int*)malloc(sizeof(int)*str_data_len/2);

// 两个字符一起合并为一个十六进制数
for(i=0;i<str_data_len;i+=2)
{
(*merged_data)[i/2] = getCharValue(str_data[i])*16 + getCharValue(str_data[i+1]);
}

// 返回合并后得到的十六进制数个数
return str_data_len/2;
}
int main(int argc, char *argv[])
{
char str_data[]="01101699aaBBccDDEEFF";
int *merged_data = NULL;
int merged_data_amount = Merge(str_data,&merged_data);
int i;

if(merged_data)
{
printf("%s = ",str_data);
for(i=0;i<merged_data_amount;i++)
printf("%X ",merged_data[i]);
printf("\n");

// 记得释放空间
free(merged_data);
}
return 0;
}
全部回答
是这个意思么? #include <stdio.h> int main() { char str[3]; unsigned char ch = 0; int i; gets(str); for (i = 0; i < 2; i++) { ch *= 16; if (str[i] >= '0' && str[i] <= '9') { ch += str[i] - '0'; } else if (str[i] >= 'A' && str[i] <= 'F') { ch += str[i] - 'A' + 10; } } printf("0x%x\n", ch); return 0; }
调用函数 int result= atoi (“01”); 再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
交通事故有伤员一方拖着不处理怎么办 如何进
扬州大洋船厂会倒闭吗
壳牌和美孚哪个适合柴油车
夜泊地址在哪,我要去那里办事
控制面板的程序越多网速越慢吗
经常反复的口舌生疮是什么原因啊?
双子和天蝎,到底谁更厉害。(更各方面的综合
花桥花溪公馆风水
三古乡卫生院怎么去啊,有知道地址的么
再生pe塑料黑膜用什么方法吹出来黑又亮
史进,朱仝的性格特点
恒通驾校这个地址在什么地方,我要处理点事
工程结构抗震构件
自考准考证补办好弄吗?具体需要哪些手续啊!
十二星座的情商是多少
推荐资讯
轮胎上的数字及字母代表什么意思
oppor9m什么时候上市的
七仙女,这部电影是那年拍的
我玩抢车位游戏,为什么我赚的钱都捐给了QOZO
合肥众友汽车修理厂地址在什么地方,想过去办
中国石化大田湾加油站地址有知道的么?有点事
明和餐厅在哪里啊,我有事要去这个地方
一诺装饰怎么去啊,有知道地址的么
福田小卡之星3排半,49O增压发动机,车箱长3.
word中如何分成一半有字,一半空白
用符号怎么表示亲嘴?
商品房的水泥楼板外沿,一般人踩上去会踩坏吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?