C에서 바이너리 파일의 내용을 읽고 체크섬의 유효성을 검사하는 올바른 방법은 무엇입니까? 여기 C - 바이너리 파일 읽기, 체크섬 확인
내가 작업있어 데이터의 예이다 (괄호 사이)0A 01 17 D8 04 00 07 9A 1F 10 FF CF 7F FF FF FF FF 7F 7F 7F FF 7F FF FF FF FF 7F 81 01 01 03 01 01 01 01 81 00 73 67 68 66 97 6C 76 64 64 6A 6B 6E 64 66 67 44 41 [17 7A]
및
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 44 41 [00 85]
체크섬 2로 이전 54 바이트의 합계를 기억 -byte (빅 엔디안) 번호.
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *f = fopen(argv[1], "rb");
unsigned char data[512];
fread(data, 1, 512, f);
int i;
int sum = 0;
for (i = 0; i < 54; i++)
{
sum += data[i];
}
if ((sum >> 8) == data[54] &&
(sum & 0xFF) == data[55])
{
printf("Checksum is valid.\n");
}
else
{
printf("Checksum is invalid.\n");
}
system("pause");
}
내가 바이트를 저장하는 char 배열을 사용하고, 루프의 체크섬을 계산하기 위해 인덱스를 사용하여 :
이 내가 사용했던 것입니다. 유효성을 검사하기 위해 비트 시프 팅과 마스킹을 사용했습니다. 더 나은 해결책이 있습니까?
감사합니다.