비트 플래그는 여러 개의 예/아니오 답을 하나의 숫자에 담는 방식입니다. 그 숫자의 각 이진 자릿수는 각각 별도의 스위치로, 켜짐 또는 꺼짐, 설정됨 또는 설정되지 않음을 나타냅니다. 이렇게 하면 프로그램이 여러 개의 작은 정보를 하나의 값 공간에 압축해서 기록할 수 있습니다.
값이 어디에서 오는지
비트 플래그는 비트 필드라고도 하며, 프로그래밍에서 나왔습니다. C, C++ 같은 언어에서는 각 비트나 비트 묶음에 개별적으로 접근해, 많은 boolean 값을 하나의 바이트 또는 여러 바이트 안에 저장할 수 있게 해 줍니다. 파일 형식들도 이와 같은 아이디어를 빌려, 내용에 대한 여러 옵션을 기록합니다.
메타데이터 보고서에서 비트 플래그를 가장 자주 보게 되는 경우는 ZIP 압축 파일과, 내부적으로 ZIP 컨테이너인 Office 형식(DOCX, XLSX, PPTX 문서)입니다. ODT 파일과 EPUB 전자책도 이 플래그를 저장하지만, 보고서에 표시되지 않을 수 있습니다. ZIP 형식은 압축 파일 안의 각 항목에 범용 비트 플래그를 부여하며, 이 값은 압축 파일을 만든 프로그램이 설정합니다. 이 값은 사용자가 직접 입력하는 것이 아닙니다.
값을 읽는 방법
플래그는 보통 16진수로 표시되며, 이는 16을 기준으로 세고 0x로 시작해 표기하는 수 체계입니다. 값이 0x0이면 어떤 스위치도 설정되지 않았다는 뜻으로, 일반적인 경우입니다. 0x2나 0x808 같은 값은 하나 이상의 비트가 켜져 있다는 뜻이며, 숫자를 2진수로 바꾸고 각 자릿수를 확인해서 해석합니다.
ZIP 플래그 중 알아 두면 좋은 것 세 가지가 있습니다.
- 첫 번째 비트는 항목이 암호화되었음을 표시하며, 비밀번호가 필요하다는 뜻입니다.
- 네 번째 비트는 해당 항목의 크기와 체크섬이 데이터 앞이 아니라 뒤에 기록되었음을 나타내며, 이는 압축 파일이 실시간으로 생성될 때 일어나는 방식입니다.
- 열두 번째 비트는 항목 이름이 UTF-8로 저장되었음을 나타냅니다. UTF-8은 악센트 문자, 비라틴 문자, 이모지까지 표현할 수 있는 문자 인코딩입니다.
내 파일에 왜 중요한지
이 플래그는 그렇지 않으면 알기 어려운 동작을 설명해 줍니다. 비밀번호로 보호된 문서가, 어떤 프로그램이 비밀번호를 묻기 전에 스스로 잠겨 있다고 알려 주는 곳이 바로 이 값입니다. 또 어떤 앱은 압축 파일을 풀기 전까지 그 안의 항목 크기를 알려 줄 수 없는 이유이기도 합니다. 그리고 한 압축 해제 앱에서는 악센트나 한자가 들어간 파일 이름이 제대로 나오는데, 다른 앱에서는 깨져 보이는 이유이기도 합니다. 하나는 UTF-8 비트를 존중하고, 다른 하나는 더 오래된 인코딩을 가정하기 때문입니다.
이 필드가 하지 않는 일도 있습니다. 파일의 품질을 설명하지 않으며, 개인 정보도 담지 않습니다. 파일이 어떤 방식으로 기록되었는지에 대한 기술적인 메모일 뿐이며, 파일이 열리지 않을 때 그 이유를 파악하는 데 유용합니다.