CRC16校验问题:C代码转Kotlin/Java后校验和不一致
C语言CRC16计算代码转Kotlin后结果不符问题
我在将一段正确的C语言CRC16计算代码转换为Kotlin代码时遇到了问题,转换后的代码生成的CRC16校验和与原C代码的结果不一致。
原C代码
// data_buf 类型为 uint8_t uint16_t crc = 0; for(uint32_t i = 0; i < BUF_SIZE; i++) { crc += data_buf[i]; }
尝试的Kotlin代码(均未得到正确结果)
第一段代码
// DFUFile 类型为 ByteArray var i = 0 var crc: UShort = 0u while(i < DFUFile.size) { crc = (crc + DFUFile[i].toUShort()).toUShort() i += 1 }
第二段代码
// DFUFile 类型为 ByteArray var crc = 0 var i = 0 while(i < DFUFile.size) { crc = (crc + DFUFile[i].toInt()) and 0x0000FFFF i += 1 }
内容的提问来源于stack exchange,提问作者AkroB
相关产品推荐
相关产品推荐

