S 公司开发了一套物联网系统用于实现汽车生产线上各种设备之间信息的交互,设备间使用 ASCII 码格式的数据进行通信。为了保证通信安全传输,系统将设备间的交互数据转换成十六进制后再进行传输,转换规则为:
(1)取出将要传输字符 ASCII 码的十六进制形式,例如:“A”的 ASCII码对应的十六进制为“0x41”;
(2)采用按位置加权的方式将十六进制数进行变换,第 1 个数据权重为 1、第 2 个数据权为 2,以此类推…。例如:“A”如果为第 1 个要传输的数据,就将其变换为“0x42”(即:0x41+1=0x42);如果为第 2 个要传输的数据,就将其变换为“0x43”(即:0x41+2=0x43)
(3)将所有要传输数据变换后的结果进行累加求和,结果取低 8 位作为校验码放置在数据的最后。处理完成后进行数据传输。
一、具体代码
#include <stdio.h>
#include <string.h> //用于字符串函数如:gets函数和strlen()函数需要添加的头文件
unsigned int i;
unsigned int total=0; //累计求和变量
unsigned char arr[100]={}; //接收字符串数组
unsigned int check=0; //校验码变量
void main()
{
gets(arr);//接收字符串
for(i=0;i<strlen(arr);i++)
{
int c=arr[i]; //将字符转换为整型
total=total+c+i+1; //累计求每个字符对应的十六进制数据及对应的位权
//printf("%x,%x\n",c,total); //用于验证,可以不用添加
}
check=total & 0xff; //取低八位
printf("传输的数据为:%x%x",total,check); //最终输出效果
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**







**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!
将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!