|
|
|
| Увидел тут задачку интересную кое-где.
Задание: Нужно написать скрипт, переводящий двоичное число (целое) в шестнадцатиричное число. Но вот главное условие: в скрипте нельзя использовать никакие функции. Ни строковые, ни массивные, никакие.
ЗЫ: Вообще, я на 99% уверен, что в оригинальном тексте задачи имелось в виду, что нельзя использовать только встроенные в PHP функции перевода чисел по разным основаниям, но ведь так задача получается очень простая. Так что давайте попробуем решить её вообще без использования каких-либо функций ! | |
|
|
|
|
|
|
|
для: DDK
(25.10.2006 в 23:48)
| | А в каком виде тогда предоставлено двоичное число?
Если "1001001011" - то это символьное и хоть как без строковых функций не обойдёшься. | |
|
|
|
|
|
|
|
для: tuder
(26.10.2006 в 07:34)
| | Решение есть, поверьте.
Подсказака: не забываем, что строковая переменная - это массив, каждый элемент которого содержит один символ. | |
|
|
|
|
|
|
|
|
для: DDK
(25.10.2006 в 23:48)
| | На PHP задача решается проще, чем на том же С http://www.softtime.ru/info/task.php?id_article=102, а обычно разбивают двоичное число на блоки по 4 позиции, каждый из которых представлет одну позицию 16-ричного числа. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2006 в 13:04)
| | Хех... жалко, пропустил мимо глаз ту задачку :( Эхх.. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2006 в 13:04)
| | по-моему, в такой постановке она на обоих языках решается одинаково:
$num = 123546;
$dig = "0123456789ABCDEF";
for($res = '', $n = 8; $n-- > 0 ; $num >>= 4)
$res = $dig[$num&15] . $res;
echo $res;
//---------------------------------------------------------
void bin_to_hex(int num, char *res)
{
int n = 8; res[n] = 0;
for(; n-- > 0; num >>= 4)
res[n] = "0123456789ABCDEF"[num&15];
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(26.10.2006 в 13:23)
| | В такой да, однако в подобных задачах обычно имеется ввиду, что двоичное число вводится пользователем и находится в строке, можно дробить строку на последовательности по 4 символа, а можно перевести в десятичный формат и воспользоваться вашей "хакерской" функцией :))) | |
|
|
|