通信协议为保证数据传输准确,通常需要在数据帧后面加上校验位,最常用的校验方法是CRC。
最近遇到使用BCC校验的项目,即需要将数据进行异或运算。
为了方便在没有网络的PC上进行BCC校验计算,写了如下一个小工具。(网上有不少在线计算的网站)
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、屏边网络推广、小程序开发、屏边网络营销、屏边企业策划、屏边品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供屏边建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
#include
#include //stringstream
#include
#include
using namespace std;
char str_to_hex(char str)
{
char hex_result = 0;;
if (str < 0x3A)
hex_result = str - 0x30;//当输入字符为0-9时
else
hex_result = str - 0x37;//当输入字符为A-F时
return hex_result;
}
int main(void)
{
while (1)
{
puts("请输入指令,以空格分隔:");
string str;
getline(cin, str);
stringstream input(str);//将获得的string字符串放入string流input中
vectordata;
string tmp;//临时字符串
while (getline(input, tmp, ' '))
data.push_back(tmp);
char bcc_result = 0;
vector hex_trans; //vector可以自行扩大,不需要提前设置大小
for (int i = 0; i < data.size(); i++)
{
char temp= (str_to_hex(data[i][0]) << 4) + str_to_hex(data[i][1]);
hex_trans.push_back(temp);
bcc_result = bcc_result ^ hex_trans[i];
}
printf("\nBCC校验值为:\n%x\n\n", bcc_result);
}
return 0;
}