누군가가 숫자 압축에 사용되는 기존 알고리즘을 명명 할 수 있습니까? 숫자는 공백과 소수 자리가없는 정수이고 완전히 무작위입니다 (예 : 35637462736423478235687479567456 .... N정수 문자열 압축 알고리즘
아니라, 지금까지 내가 가진 모든이를, 그것은
function intergerToChar($v)
{
$buffer="";
$charsLen=strlen($v);
for($i = 0; $i <= $charsLen; $i++)
{
$asc=$v[$i];
if($asc==0){$buffer[]=0;}
elseif($asc==1){$buffer[]=$v[$i].$v[$i+1].$v[$i+2];$i=$i+2;}
elseif($asc==2)
{
if($v[$i+1]<5){$buffer[]=$v[$i].$v[$i+1].$v[$i+2];$i=$i+2;}
elseif($v[$i+1]==5 && $v[$i+2]<6){$buffer[]=$v[$i].$v[$i+1].$v[$i+2];$i=$i+2;}
else{$buffer[]=$v[$i].$v[$i+1];$i++;}
}
else{$buffer[]=$v[$i].$v[$i+1];$i++;}
}
return $buffer;
}
BTW 원래 크기의 약 40 %를 감소 ASCII로 정수 변환, 내가 PHP 의미하지 알고 압축 도구를 만들기위한 도구. I는 C가/C가 ++
UPDATE 이용 될 것이다 : 이것은 위의 코드보다 더 압축 결과 다른 PHP 코드, 그것은 66 % 개까지 압축 할 수없는 경우, 위치 1의 정수, 6, 12, th 등은 256보다 작은 값을 가지며 그 뒤에 오는 3 개의 정수는 앞의 3 개의 정수보다 256 이하의 값을 갖습니다. 예 : 59 ... 66까지 압축 할 수 있습니다 최적이 아닌 것으로 알고 있습니다. 제발 제안이나 수정을 부탁드립니다.
function intergerToChar2($v)
{
$buffer="";
$charsLen=strlen($v);
for($i = 0; $i <= $charsLen; $i++)
{
if($v[$i].$v[$i+1].$v[$i+2]<256){$base=$v[$i].$v[$i+1].$v[$i+2];$i=$i+2;}
else{$base=$v[$i].$v[$i+1];$i=$i+1;}$i=$i+1;
if($v[$i].$v[$i+1].$v[$i+2]<256){$next=$v[$i].$v[$i+1].$v[$i+2];$i=$i+2;}
else{$next=$v[$i].$v[$i+1];$i=$i+1;}
if($next!=="")
{
$next=$next-$base;
if($next<0)$next=255+$next;
}
$buffer[]=$base;
$buffer[]=$next;
}
return $buffer;
}
btw, 10 비트 인코딩 또는 40 비트 인코딩은 base_convert() 또는 http://php.net/manual/en/ref.bc.php 페이지의 네 번째 주석을 사용하여 쉽게 수행 할 수 있습니다.이 페이지는 항상 약 58.6 %의 압축률을 나타냅니다.
는 정말 숫자 또는 숫자 만 그냥 문자열이? – brianestey
지금 보관 하시겠습니까? – Blender
@brianestey 예, u r 맞음! 숫자의 문자열. 그것은 문자 일 수도 있습니다. –