我现在有一组字符串如下

来源:百度知道 编辑:UC知道 时间:2024/05/14 22:42:56
char str[]={"238f34a9d800003fba9d"},其实里面都是16进制数,现在我想对其进行类型转换,好直接进行计算
例如:0x238f+0x34a9,0xd8000+0x03fb,或者用其他方法!
如何做?好心人帮帮忙!谢谢

要保证字符串长度是4的倍数哦!

另外,xniren兄给的sscanf(str, "%4x", &i); 也很好用。
#include<stdio.h>
#include <conio.h>
#include<string.h>
void main()
{
char str[]={"238f34a9d800003fba9d"};
char snum[5];
int num[256], n;
int i, total;

n = 0;
snum[4] = 0;
while (*(str + 4 * n))
{
strncpy(snum, str + 4 * n, 4);
sscanf(snum, "%x", num+n);
n++;
}

total = 0;
for (i = 0; i < n; i ++)
{
total += num[i];
}
printf("%x\n", total);
getch();
}

这能做吗?字符串中每个值间没有用什么区分开,另外也不是固定4位。
比如0xd8000,是5位。。。
这样的题目估计是不完整吧,要不就是无解的题目了。

建议楼主使用C库函数sscanf()来处理。比如:
char str[]="238f34a9d800003fba9d";
如果需要将其中的字符串转换为整型,那么
int i;
sscanf(str, "%4x", &i); // 此时i=0x238f
sscanf(str+4, "%4x", &i); // 此时i=0x34a9

有现成的方法:
Integer i =