как преобразовать bigint в binary

novik

Новичок
как преобразовать bigint в binary

Приветствую всех.

Задача следуюшая, необходимо преобразовать 8-ми байтное значение bigint (хранится в PHP в виде строки) в двоичную форму. Т.е. имеем

$decimal = "166000417012806575";

на выходе нужно получить

$binary = "1001001101110000000111111111110000100111010111001110101111";

Кто-то сталкивался с подобной задачей? Спасибо за любую помощь :)

-- novik
 

Panchous

Павел
не знаешь алгоритм перевода из одной системы счисления в другую?
 

rotoZOOM

ACM maniac
PHP:
	$a="166000417012806575";
	$res="";
	while ($a!="0"){
		$res.=bcmod($a,"2");
		$a=bcdiv($a,"2",0);
	}
	$res=strrev($res);
	echo $res;
 

novik

Новичок
Автор оригинала: Panchous
не знаешь алгоритм перевода из одной системы счисления в другую?
А по сути? ;)

Мне интересны все варианты решения - нужен самый быстрый для PHP.

-- novik
 

novik

Новичок
Автор оригинала: rotoZOOM
PHP:
	$a="166000417012806575";
	$res="";
	while ($a!="0"){
		$res.=bcmod($a,"2");
		$a=bcdiv($a,"2",0);
	}
	$res=strrev($res);
	echo $res;
Thanx. Вариант с использованием BC уже реализован. Есть еще варианты?

-- novik
 

rotoZOOM

ACM maniac
Есть, с использованием GMP, а третий вариант можно и самому написать полностью деление на 2 и взятие остатка от 2 (кстати, совмещается все в одной функции).
Еще надо варианты ?
 

novik

Новичок
Автор оригинала: rotoZOOM
Есть, с использованием GMP, а третий вариант можно и самому написать полностью деление на 2 и взятие остатка от 2 (кстати, совмещается все в одной функции).
Еще надо варианты ?
Ясно. Кстати, для экзотики добавлю вариант с вызовом MySQL'ного CONV() - так, на случай, если очень надо, но нет ни BC, ни GMP, ни портированной математики в pure-PHP ^)

Всем спасибо :)
 
Сверху