사용자 지정 이진 파일 형식을 리버스 엔지니어링합니다. UTF-8 문자열을 나타내는 데이터 구조를 찾았습니다. 문자열 길이를 저장하기 위해 헤더에 1 ~ 2 바이트가 있고 그 다음 실제 문자열 데이터가 있습니다.UTF-8 문자열을 저장하는 데 사용되는 되돌리기 이진 구조
╔════════════╦═══════════════╦═══════════════════╗
║ first byte ║ optional byte ║ UTF-8 string data ║
╚════════════╩═══════════════╩═══════════════════╝
헤더의 두 번째 바이트는 선택 사항이며 문자열 길이가 128 바이트보다 클 경우에만 해당됩니다. 문자열 길이가 128 바이트보다 작거나 같으면 길이를 쉽게 해석 할 수 있습니다. 그러나 문자열 길이가 128보다 클 경우 문자열 길이를 계산할 수 없습니다. 그래서 나는 실험을했고 다른 길이의 문자열을 가진 많은 바이너리 파일을 생성했다. 그 결과는 다음과 같다. 문자열 길이는 바이트입니다. 이 널 (null)이 제 경우 유사 C에서와 같은 문자열을, 종료 대신 문자열 길이를 저장하는 헤더가 어디 선가 파스칼이 읽을
╔════╦════╦═══════════════╗
║ 01 ║ 02 ║ String length ║
╠════╬════╬═══════════════╣
║ 7D ║N/A ║ 126 ║
║ 7E ║N/A ║ 127 ║
║ 7F ║N/A ║ 128 ║
║ 80 ║ 01 ║ 129 ║
║ 81 ║ 01 ║ 130 ║
║ C7 ║ 01 ║ 200 ║
║ C8 ║ 01 ║ 201 ║
║ F9 ║ 01 ║ 250 ║
║ FE ║ 01 ║ 255 ║
║ FF ║ 01 ║ 256 ║
║ 80 ║ 02 ║ 257 ║
║ 81 ║ 02 ║ 258 ║
║ 82 ║ 02 ║ 259 ║
║ F3 ║ 03 ║ 500 ║
║ F4 ║ 03 ║ 501 ║
║ F5 ║ 03 ║ 502 ║
║ F6 ║ 03 ║ 503 ║
║ 80 ║ 04 ║ 513 ║
╚════╩════╩═══════════════╝
는 \ 델파이 문자열 형식을 사용하고 있습니다. 제 질문은이 형식에 대한 아이디어가 있습니까? 길이가 128 바이트보다 클 때 어떻게 문자열 길이를 계산할 수 있습니까?
감사합니다. BTW는 알려진 형식입니까? –
내가 아는 바가 없다. – EugeneK