串口异或效验 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 += QSt