Hex文件格式CRC校验
其中的一条记录:1011000071079907E8071008D206FA0671079907D00xD0为校验,但不知道怎么编写计算校验的程序。
校验和的算法为:计算从0x3A 以后(不包括0x3A)的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值后用0x100减去这个算数累加和,得出得值就是此行得校验和。
计算方法有,但看的不是很懂,望指导或者有代码更好
shaoziyang 发表于 2015-1-30 13:33
计算结果是补码啊。其实直接把校验也加上,如果结果是0,说明就是正确的。
0x30+0xD0=256=0 ...
太感谢,困扰我很久了.关于补码问题,没涉及到负数,结果为什么会是补码 自己先顶,坐等啊。。。 比如用一个字节变量,将前面全部数据累加,然后和最后一个进行比较。
还有,这个不能叫CRC校验的。
shaoziyang 发表于 2015-1-29 22:48
比如用一个字节变量,将前面全部数据累加,然后和最后一个进行比较。
还有,这个不能叫CRC校验的。
...
就这么简单吗,能给个算法吗? shaoziyang 发表于 2015-1-29 22:48
比如用一个字节变量,将前面全部数据累加,然后和最后一个进行比较。
还有,这个不能叫CRC校验的。
...
CRC有特定算法的。 0度虚实 发表于 2015-1-30 09:05
就这么简单吗,能给个算法吗?
就这么简单啊,代码自己很容易实现吧。没有什么困难的。
先判断第一个字节是不是冒号,然后判断第2/3字节,代表数据类型;在后面是长度、地址等,然后是数据,最后一个字节是校验。找一个HEX文件的说明,很快就可以搞定了。 百科中的解释,可以参考一下。
http://baike.baidu.com/link?url=Y_2Hkp82oqYfQhcaQjClSDn1zevCcD-d9tvi5QnopJTwur63pZKBGWoDv8NWamc1BLZZCXGaLru14c9oDmRZkq
怎么和modbus通信协议似的!
页:
[1]
2