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

匿名 (未验证) 提交于 2019-12-03 00:15:02

串口异或效验 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); 

参考

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