인터넷에서 어렵게 구한 바이너리 to 숫자 함수 인데요.
function binary_to_number($data)
{
$base = "256";
$radix = "1";
$result = "0";
for($i = strlen($data) - 1; $i >= 0; $i--)
{
$digit = ord($data{$i});
$part_res = gmp_strval(gmp_mul($digit, $radix)); //echo $part_res." part_res <br>";
$result = gmp_strval(gmp_add($result, $part_res)); //echo $result." result<br>";
$radix = gmp_strval(gmp_mul($radix, $base)); //echo $radix." radix<br>";
}
return $result;
}
function number_to_binary($number)
{
$base = "256";
$result = "";
$div = $number;
while($div > 0)
{
$mod = gmp_strval(gmp_mod($div, $base));
$div = gmp_strval(gmp_div($div, $base));
$result = chr($mod) . $result;
}
return $result;
}
이것의 단점은 textarea 로 많은 양의 문자열을 숫자로 바꾸려면 메모리가 모자르다고 에러가 나옵니다.
아마도 계속 256만큼 더해서 생기는 문제가 아닐까 싶은데요.
제 소견에 단순히 1개의 문자열을 숫자열로 바꾸면 메모리 부족이 해결되지 않나 싶은데요.
저 방법 말고 다른 방법으로 이진수를 10진수로 바꾸는 방법이 없을까요?
댓글 0