您的位置:首页 > 其它

接受a,b 两个16进制字符串,返回相加的和,以16进制字符串形式保存在*a中

2015-11-23 21:47 465 查看
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

/*
接受a,b 两个16进制字符串,返回相加的和,以16进制字符串形式保存在*a中;
*/
void strAdd(char *a,char *b){

long temA = strtol(a,NULL,16);//strtol函数将a字符串以16进制的模式解析为整形数。
long temB = strtol(b,NULL,16);
//printf("temA = %d,temB = %d\nAfter add:",temA,temB);
temA = temA + temB;
//printf("temA = %d\n",temA);
//sprintf函数将整形temA 以16进制字符串模式保存到*a中。
sprintf(a,"%X",temA);
}

int main()
{
char a[] = "0x3";
char b[] = "0xE";
char c[] = "0x1A";
char d[] = "0xA";
char f[100];
char *e;
int w,x, y, z,n;
strAdd(a,b);
printf("%s\n",a);
x = strtol( a, NULL, 16);
y = strtol( b, NULL, 16 );
z = strtol( c, NULL, 16);
w = strtol("sdsa%da@q1",&e,16);
printf( "x = %d\n", x );
printf( "y = %d\n", y );
printf( "z = %x\n", z );
printf( "w = %d\n",w);
printf( "Error w = %s\n",e);
//将整数转换为字符串;
n = sprintf(f,"%X",z);
printf("f里面的值为%s\n",f);

return 0;
}

/*
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位
*/
/*
#include <stdlib.h>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
char *a = "0x11";
int A = strtol(a,NULL,10);
printf("%d\n",A);
}

将st 中字符串,没两个装换为10进制;
char st[]="7C7C307C724C7C267C7C7C7C7C3A7C417C7C7C";
int ch[sizeof(st)/2];
char c[sizeof(st)/2];
printf("十六进制 十进制   字符\n");
for(int i=0;i<strlen(st);i=i+2)
{

ch[i/2]=((st[i]<64?st[i]-48:st[i]-55)*16)+(st[i+1]<64?st[i+1]-48:st[i+1]-55);
c[i/2]=ch[i/2];
printf("  %c%c   ",st[i],st[i+1]);
printf("  %5d",ch[i/2]);
printf("  %5c\n",c[i/2]);
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: