2011-11-06 2 views
0

내 120 비트 데이터를 32 비트로 변환 할 수있는 방법이 있습니까?이 32 비트에서 120 비트 데이터를 가져온 후에는 어떻게해야합니까?Java 120 비트 데이터 변환 32 비트

+1

목표가 120에서 120으로 동일한 정보를 저장하는 것이면 가능하지 않습니다. 문제에 대해 더 많은 정보를 얻을 수 있습니까? – migu

+1

[압축] (http://en.wikipedia.org/wiki/Data_compression)이라고하며, 데이터의 반복에 따라 달라집니다. – nfechner

+0

사실 나는 120 비트까지 합쳐서 32 비트로 표현하기를 원했던 두 개의 ips (각각 32 비트), 두 개의 포트 번호 (각각 16 비트) 및 타임 스탬프 (24 비트)를 가지고있다. – blackhole

답변

2

이는 무손실 압축이라고하며, 그것에 대해서는 tutorial을 확실히 읽어야합니다.

이렇게 말하면 모든 데이터에서 수행 할 수있는 압축은 데이터 내의 정보의 중복에 크게 의존합니다. 따라서 32 비트까지 가져올 수는 있지만 보장은 없습니다.

+0

사실 나는 두 개의 ips (각각 32 비트), 두 개의 포트 번호 (각각 16 비트) 및 타임 스탬프 (24 비트)까지 합쳐서 120 비트까지 합쳐서 32 비트로 나타 내기를 원했습니다. – blackhole

0

마다 120 비트 데이터를 32 비트 데이터로 압축하고 원본 데이터를 다시 압축 해제 할 수 없습니다. 그러나 의 일부만 개를 무손실로 압축 할 수 있습니다.

1

이러한 변환이 "항상"가능하지 않다는 수학적 증거가 있는데, 비둘기 홀 원칙이라고합니다. 만약 32 비트에 120 비트의 임의의 시퀀스를 압축 할 수있는 경우

http://en.wikipedia.org/wiki/Pigeonhole_principle

기본적으로, 재귀 적으로 32 비트의 전체 웹을 압축 할 수있다.

이제 이것이 가능하지 않다는 것을 의미하지는 않습니다. 압축 할 시퀀스의 몇 가지 속성을 미리 알고 있으면 120 비트 시퀀스를 32 비트로 압축 할 수 있습니다.

예를 들어, IP는 "가능한"값 대신 목록의 일부일 수 있습니다. 목록의 색인 비용은 32 비트 미만입니다. 포트 번호와 동일하게 완전히 랜덤하지 않을 수 있으며 사전 정의 된 번호 목록으로 선택 항목을 줄일 수 있습니다. 4 포트만 가능하다면 16 비트 대신 2 비트 만 필요합니다.

타임 스탬프의 경우 훨씬 어렵습니다. 그것은 측정의 정밀도에 달려 있습니다. "델타"값을 사용할 수도 있습니다 (알려진 "기본"에 + N이 추가됨). 타임 스탬프에 사용할 수있는 비트 수는 이전 필드에서 이미 사용 된 비트 수에 따라 다릅니다.

따라서 일 수 있습니다.은 32 비트로 압축 할 수 있지만 보장 할 수는 없습니다. 고려해야 할 다양한 상황에 따라 다릅니다.

관련 문제