c语言异或操作

来源:百度知道 编辑:UC知道 时间:2024/06/22 19:39:23
请问我有两个字符串比如char *a="0000400000123456" char *b="0592389FFFFFFFF" 进行异或或得到的char *c="0592789FFFEDCBA9";怎么用c语言实现?

你是打算对数字进行异或,需要将字符变成数字,异或完后再变回字符
我只简单写了一下,没有异常处理,顺便说你b中F少了一个

#include <stdio.h>

int ctoi(char c)
{
if(c>='0'&&c<='9')
return c-48;
else if(c>='A'&&c<='F')
return c-55;
else if(c>='a'&&c<='f')
return c-87;
else
return -1;
}

char itoc(int i)
{
if(i>=0&&i<=9)
return i+48;
else if(i>=10&&i<=15)
return i+55;
else
return 0;
}

int main()
{
char *a="0000400000123456";
char *b="0592389FFFFFFFFF";
char *c="0000000000000000";
int i=0;
int ai,bi,ci;
while(a[i])
{
ai=ctoi(a[i]);
bi=ctoi(b[i]);
ci=ai^bi;
c[i]=itoc(ci);
i++;
}
printf("%s\n",c);
return 0;
}

C语言的异或操作是位操作的一种,其运算符号为^。
要打出这个符号,需要在英文输入法下,