串口异或校验字C++代码实现

孤人 提交于 2019-12-02 05:28:00

串口异或效验 C++代码实现

直接上代码片段

QString str="32000";
str += QString::number(ui->lightBox->value());
	char* ch;
	QByteArray ba = str.toLatin1();
	ch = ba.data();
	j = ch[0];
	for (int i = 1; i < str.length(); i++) {
		j = j^ch[i];//返回10进制的效验码
	}
	//换算16进制
	for (; k > 0;) {
		if (j < 10) {
			str += "0" + QString::number(j);
			k = 0;
		}
		else if (j > 9 && j < 16) {
			if (j == 10)
				str += "0A";
			if (j == 11)
				str += "0B";
			if (j == 12)
				str += "0C";
			if (j == 13)
				str += "0D";
			if (j == 14)
				str += "0E";
			if (j == 15)
				str += "0F";
			k = 0;
		}
		else {
			int a = j / 16;
			int b = j % 16;
			if (a< 10) {
				str +=QString::number(a);
				if (b < 10) {
				str += QString::number(b);
				}
				else {
					if (b == 10)
						str += "A";
					if (b == 11)
						str += "B";
					if (b == 12)
						str += "C";
					if (b == 13)
						str += "D";
					if (b == 14)
						str += "E";
					if (b == 15)
						str += "F";
				}
			}
		
			else {
				if (a == 10)
					str += "A";
				if (a == 11)
					str += "B";
				if (a == 12)
					str += "C";
				if (a == 13)
					str += "D";
				if (a == 14)
					str += "E";
				if (a == 15)
					str += "F";
				if (b < 10) {
					str += QString::number(b);
				}
				else {
					if (b == 10)
						str += "A";
					if (b == 11)
						str += "B";
					if (b == 12)
						str += "C";
					if (b == 13)
						str += "D";
					if (b == 14)
						str += "E";
					if (b == 15)
						str += "F";
				}
			
			}
		
			k = 0;
		}
	}
	ba = str.toLatin1();
	ch = ba.data();
	//ui->label_5->setText(str);
	serialM->write(ch);

参考

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!