C 字符串中每个单个字符的XOR和

C 字符串中每个单个字符的XOR和,c,xor,C,Xor,我得到了Receive[300]中的字符串,它以delim1-&开头,以delim2-*结尾。现在我需要对中间的所有字符进行异或运算。我认为我需要将每个单独的字符转换成bin,然后将它们相加。我一直在寻找“string.h”中的函数,但里面什么都没有。我应该如何解决这个问题 使用循环 char *ptr = strtok(Received, delim1); char *star = strtok(ptr, delim2); char result = ptr[0]; // Start with

我得到了Receive[300]中的字符串,它以delim1-&开头,以delim2-*结尾。现在我需要对中间的所有字符进行异或运算。我认为我需要将每个单独的字符转换成bin,然后将它们相加。我一直在寻找“string.h”中的函数,但里面什么都没有。我应该如何解决这个问题


使用
循环

char *ptr = strtok(Received, delim1);
char *star = strtok(ptr, delim2);
char result = ptr[0]; // Start with the first character in the token
if (ptr[0]) { // don't loop if the string is empty
    for (char *p = ptr+1; *p; p++) { // Loop over the remaining characters
        result ^= *p; // XOR them into the result
    }
}

哪种语言?你知道什么是异或吗?我在用C语言编程。异或是异或。我需要检查beetween和*中字符的异或是否等于*后面的2个字节$GPVTG,,,,,,,,N*30Quote:“我想我需要将每个单个字符转换为bin…”不,你不需要。它在机器中已经是二进制的,所以只需继续使用xor即可。
char
s是二进制的。只需对它们进行异或运算,这是对整数的按位操作,
char
是整数类型。将代码以纯文本形式发布,而不是图像。请参阅以获取代码格式帮助。但是如何确定令牌的最后一个字符何时出现?(*)在这段代码中,它以&开始,当另一个&出现时停止-要计算一个校验和,我需要在&和*之间进行计数。还是我错了?
strtok()
将分隔符替换为空字节。因此,
*
成为以
&
开头的令牌的结尾。我的循环中的
*p
测试会检查这一点。有问题,或者至少我不明白。声明char*ptr=strtok后(已接收,delim1);我们希望查看“*”出现之前剩余的每个单个字符。但是STM STUDIO-没有显示任何更改。您是否也声明了
char*star=strtok(ptr,delim2)第一个?您需要用空字节替换
*
。是的,每当发生输入(数据到达)时,我都会从GPS接收数据->声明char*ptr和char*star并运行此循环。我理解这个循环的想法,但是总和(代码中的结果)保持不变。