아주 간단한 프로그램이다. 뭔가 학교다닐때 코딩을 정말 안해보았다고 생각했는데 어디선가 자꾸 코드들이 튀어나와서 추억으로 남는게 신기하다..ㅎㅎ
간단한 코드인 만큼 깃 주소 먼저 공유하고 간략히 설명하겠다.
Git 주소
먼저 체크섬이란 체크섬은 중복 검사의 한 형태로, 오류 정정을 통해, 전자 통신이나 기억 장치속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.
체크섬의 값은 모든 데이터의 값을 더한 다음에 1의 보수(0과 1을 전부 바꾸면 된다.)를 취한 값과 같다.
여기서 범위를 넘은 값은 다시 뒤에 더한다.
따라서 체크섬을 확인하는 방법은 데이터의 모든 값을 더한 다음에 해당 값을 체크섬 값과 or연산을 하면 전부 1인값(ex.11111111)이 나오게 된다.
여기서 0이 나오게 되면 프로그램은 송신된 데이터에 오류가 있다고 판단하게 되는 것이다.
체크섬을 확인하는 방법은 데이터의 모든 값을 더한 다음에 해당 값을 체크섬 값과 or연산을 하면 전부 1인값(ex.11111111)이 나오게 된다.
여기서 0이 나오게 되면 프로그램은 송신된 데이터에 오류가 있다고 판단하게 되는 것이다.
깃에 올린 코드는 이러한 원리를 이용한 코드인데 설명하면
1.파일을 열고 파일에서 데이터를 읽어온다. 파일에서 읽어온 데이터는 fileA 배열에 저장
2.fileA 배열의 데이터를 바탕으로 체크섬을 계산
-각 데이터를 합산한 후에 1의 보수를 취하여 체크섬을 계산
3.fileA 배열과 계산된 체크섬을 결합하여 fileB 배열을 생성
4.fileB 배열에 대해 다시 한 번 체크섬을 계산하고, 계산 결과를 출력
5.계산된 체크섬 값이 0x00이라면 데이터가 정상이므로, 이를 파일로 저장합니다. 그렇지 않다면 에러가 발생한 것으로 처리합니다.
6.파일 저장 후에는 fileA 배열과 fileC 배열을 비교하여 동일한지 확인
7.마지막으로, 체크섬을 인위적으로 변경하고 다시 계산하여 에러가 발생하는지 확인
의 순서로 코드를 구성하였다.
실행결과 원하는 대로 문제없이 동작하는 것을 확인 할 수 있었다.