2014-12-16 5 views
-4

다음 위치에 사용자 지정 파일 헤더를 쓰려고합니다.C++에서 8 비트 체크섬 계산

// Assume these variables are initialized. 
unsigned short x, y, z; 
unsigned int dl; 
unsigned int offset; 
// End assume 

u_int8_t major_version = 0x31; 
u_int8_t minor_version = 0x30; 

u_int_32_t data_offset = (u_int_32_t)offset; 

u_int16_t size_x = (u_int16_t)x; 
u_int16_t size_y = (u_int16_t)y; 
u_int16_t size_z = (u_int16_t)z; 

u_int_32_t data_size = (u_int_32_t)dl; 

지금, 내가 뭘하고 싶은 주요 개정에서 DATA_SIZE 변수에 시작 필드에서 8 비트 헤더 체크섬을 계산이다 : 나는 다음과 같이 설명되어있는 필드가 있습니다. 나는 이것에 대해 상당히 새롭고 현재의 필요를 충족시킬 수있는 단순한 무언가가 충분하다.

+0

무엇이 당신의 질문입니까? – Kelm

답변

1

나는 당신이 달성하려고하지만, 엄격하게 귀하의 질문에 대답해야할지 확실하지 않다, 8 비트 체크섬은 일반적으로

sum_of_all_elements %255 

간단히 말해

로 계산 함께 모든 요소를 ​​추가하고 sum % 255은 체크섬입니다.
추가 할 때 오버플로에주의하십시오 (문제가 발생할 경우 부분 합계를 계산할 수 있음).

참고로 8 비트 체크섬이 좋지 않습니다. 모든 사례를 구별하는 데 도움이되지 않으며 데이터 복구에 도움이되지 않습니다. 이것이 16 비트 체크섬이 일반적으로 선호되는 이유입니다.