/*
问题:一张PNG图片HIDR Chunk中的数据为:
00 00 00 0D 49 48 44 52 00 00 00 DC 00 00 00 DC 10 06 00 00 00 4B CA 13 C2
Chunk Type Code域和Chunk Data部分是:49 48 44 52 00 00 00 DC 00 00 00 DC 10 06 00 00 00
如何验证用该数据计算得到的CRC校验码是:4B CA 13 C2 ?
下面是代码验证过程代码和总结。
方法:用比较法来验证,为了得到结果综合法分析结合转换思想,逐步推进。
*/
# include <stdio.h>
# include <string.h>
/*1.char*,unsigned char*,char,unsigned char的理解
char*,unsigned char*记录的就是二进制转换到的十六进制的字节码[整(整数补码(正整数还是原码负整数补码),浮点数IEEE74原码,字符编码原码),
存放顺序是先入先存放的,超过一个字节就会区分大小端存放。char*,unsigned char*指针转换到char,unsigned char会转换到字符类型。
但是char,unsigned char整数运算还是十六进制的字节码(包括位运算之类),所以可以提供十六进制整数序列,用整数指针访问序列每个元素(对于十六进制的字节码直接进行CRC计算。
如果希望char,unsigned char整数运算,能得到从整数来的值那么需要截取一个字节来处理;或者采用结构体赋予整型值放置在内存或者二进制文件中读取出来,然后一个个char,unsigned char整数运算
处理。
2.大小端转换,png图片数据是用Big-Endian存储数值数据的需要转换为大端模式。
数值数据存在大小端区别,CC++结构体存储数值数据到二进制文件中,是以小端模式存放的,其实内存中也是小端模式的字节存放的(主流的CPU都这样);而PNG数值类型数据是以
大端模式存放的,所以从二进

这篇博客探讨了PNG图片HIDR Chunk中的CRC校验码计算过程,通过00 00 00 0D 49 48 44 52等数据,展示了如何验证计算出的CRC校验码4B CA 13 C2的正确性。文章使用代码验证和综合分析的方法,解释了CRC校验码的计算原理。
最低0.47元/天 解锁文章
3375

被折叠的 条评论
为什么被折叠?



