압축 할 정수가 너무 큽니다. int 배열이 먼저 자바에 의해 바이트로 변환 할 필요가Java에서 정수 배열 압축
int[] myIntArray;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new DeflaterOutputStream(byteArrayOutputStream));
objectOutputStream.writeObject(myIntArray);
주 -
그러나 자바에서 그것을 할 수있는 방법으로는 다음과 같이 사용하는 것입니다. 이제는 속도는 빠르지 만 완전히 새로운 바이트 배열을 만들고 전체 원래 int 배열을 스캔하여 바이트로 변환하고 새 바이트 배열에 값을 복사해야합니다.
바이트 변환을 건너 뛰고 정수를 바로 압축 할 수있는 방법이 있습니까?
int 배열이 바이트로 변환되는 위치는 어디입니까? ObjectOutputStream는 객체를 가져 와서 직접 직렬화합니다. DeflaterOutputStream은 직렬화 된 결과를 압축 한 다음 압축 된 결과를 ByteArrayOutputStream에 저장합니다. 나는 그것이 정확히 당신이 원하는 것을 생각합니다 ... – Stobor
제 경우에는 압축하려는 객체가 int [] 배열입니다. 직렬화 프로세스에서이를 건너 뛸 단계 인 바이트로 변환합니다. – pdeva
왜? 당신은 당신이 알 필요가없는 단계를 건너 뛰고 싶다고 말합니다. 각 단계에는 데이터 복사가 있으며 압축을 풀 때도 마찬가지입니다. 실적이 문제라면 시간을 얼마나 절약하려고하십니까? 개체를 만드는 것이 적당한 양의 데이터라도 훨씬 더 비쌉니다. –