对于xmodem协议有以下不明白之处
包约定:SOH | 信息包序号 | 信息包序号的补码 | 数据区段 | 算术校验和
1:如果包的数量大于256个,信息包序号怎么算?
2:算数校验和是怎么计算的?
3:"数据区段的长度固定为 128 字节,其内容没有任何限制,可以是文本数据或二进制数据,不足128字节的文件结尾以ctrlz(1AH)补全"
如果这是最后一个包,实际数据量小于128个字节,那1AH这个数据怎样判定是否为文件内数据还是补全用的数据?
CRC又是怎么回事的?对于xmodem-1k的最后那个校验不懂。
1: 忘了,回头查一下说明。
2: CRC校验,很经典的校验算法。
CRC的英文全称为Cyclic Redundancy Check(Code),中文名称为循环冗余校验(码)。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。
CRC计算与普通的除法计算有所不同。普通的除法计算是借位相减的,而CRC计算则是异或运算。任何一个除法运算都需要选取一个除数,在CRC运算中我们称之为poly,而宽度W就是poly最高位的位置。比如poly 1001的W是3,而不是4。注意最高位总是1,当你选定一个宽度,那么你只需要选择低W各位的值。假如我们想计算一个位串的CRC码,并要保证每一位都要被处理,因此我们需要在目标位串后面加上W个0。下面举例说明CRC算法的过程。
你也不希望我拷贝一个文章给你看吧。参考
http://www.yuanma.org/data/2006/1010/article_1637.htm
3: 文件结尾有EOF标志。