작은 크기의 데이터 묶음을 압축하는 iOS 앱이 있습니다. LZ4 모드에서 실행되는 compression_encode_buffer를 사용하여 내 필요에 충분히 빨리 수행합니다.iOS의 compression_encode_buffer에서 LZ4 출력 디코딩
나중에 Apple 제품이 아닌 장치에서 파일을 만들고 디코딩합니다. 이전에는 ZLIB 압축 모드를 사용하고 있었고 C#에서 System.IO.Compression.DeflateStream을 사용하여 성공적으로 디코딩 할 수있었습니다.
그러나 LZ4 출력으로 시간을 보내고 있습니다. LZ4 문서 here을 기반으로, Apple은 스트림을 4 바이트 매직 번호, 4 바이트 압축 해제 크기 및 4 바이트 압축 크기로 시작하는 블록 묶음으로 나눕니다. 이 모든 것이 합리적입니다. 파일을 구문 분석하여 raw LZ4 청크로 변환 할 수 있습니다. 버퍼 iOS 출력의 각 청크는 약 65,635 바이트로 압축이 풀리고 내 경우에는 약 10 개가 있습니다.
그러나 다음과 같이 : 나는 남겨진 LZ4 덩어리로 무엇을해야할지 몰라. 나는 LZ4net의 LZ4.LZ4Stream, LZ4net의 LZ4.LZ4Codec (첫 번째 블록을 관리하지만 두 번째 피드를 제공 할 때 실패 함)로 디코딩 해 보았습니다. 또한 데이터를 디코딩하기 위해 여러 C++ 라이브러리를 사용해 보았습니다. 각각은 iOS 압축 기능이 비표준 방식으로 인코딩 된 헤더를 찾는 것처럼 보입니다.