gpt4 book ai didi

c++ - 从 char 在 C++ 中创建校验和

转载 作者:行者123 更新时间:2023-11-28 02:51:30 26 4
gpt4 key购买 nike

我试着理解这段 C++ 代码:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
char temp[50];
sprintf(temp,"%S",Edit1->Text);

Send(temp);
}

void TForm1::Send(char *TX_String)
{
unsigned char checksum = 0x02;

while(*TX_String)
{
checksum ^= *TX_String++;
}

checksum ^= 0x03;
}

我的复制品是这样的:

#include <iostream>
using namespace std;

void prepareAndSend() {
char Command[50];
sprintf(Command,"%s", "65535V");

unsigned char checksum = 0x02;

char* p = Command;
while(*p) {
checksum ^= *p++;
}
checksum ^= 0x03;

std:cout << checksum << std::endl;
}

int main() {
prepareAndSend();
return 0;
}

但是我得到一个错误:

error: lvalue required as increment operand checksum ^= *Command++;

此代码为从输入字段传递的文本创建校验和。我不熟悉 C++。有什么想法为什么它不能正常工作吗?

最佳答案

因为 char *Command[50];char* TX_String 不同。 char* TX_String 是指向字符序列的指针,而 char *Command[50]; 是此类指针的数组。

试试这个:

void prepareAndSend() {
char Command[50];
sprintf(Command,"%s", "65535V");

unsigned char checksum = 0x02;

char* p = Command;
while(*p) {
checksum ^= *p++;
}
checksum ^= 0x03;
std:cout << checksum << std::endl;
}

关于c++ - 从 char 在 C++ 中创建校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com