Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перевод двоичного числа в шестнадцатиричное
 
 автор: DDK   (25.10.2006 в 23:48)   письмо автору
 
 

Увидел тут задачку интересную кое-где.

Задание: Нужно написать скрипт, переводящий двоичное число (целое) в шестнадцатиричное число. Но вот главное условие: в скрипте нельзя использовать никакие функции. Ни строковые, ни массивные, никакие.

ЗЫ: Вообще, я на 99% уверен, что в оригинальном тексте задачи имелось в виду, что нельзя использовать только встроенные в PHP функции перевода чисел по разным основаниям, но ведь так задача получается очень простая. Так что давайте попробуем решить её вообще без использования каких-либо функций !

   
 
 автор: tuder   (26.10.2006 в 07:34)   письмо автору
 
   для: DDK   (25.10.2006 в 23:48)
 

А в каком виде тогда предоставлено двоичное число?

Если "1001001011" - то это символьное и хоть как без строковых функций не обойдёшься.

   
 
 автор: DDK   (26.10.2006 в 12:09)   письмо автору
 
   для: tuder   (26.10.2006 в 07:34)
 

Решение есть, поверьте.

Подсказака: не забываем, что строковая переменная - это массив, каждый элемент которого содержит один символ.

   
 
 автор: P@Sol   (26.10.2006 в 12:17)   письмо автору
 
   для: DDK   (25.10.2006 в 23:48)
 

смотрели http://softtime.ru/forum/read.php?id_forum=7&id_theme=22629&page=1?

   
 
 автор: cheops   (26.10.2006 в 13:04)   письмо автору
 
   для: DDK   (25.10.2006 в 23:48)
 

На PHP задача решается проще, чем на том же С http://www.softtime.ru/info/task.php?id_article=102, а обычно разбивают двоичное число на блоки по 4 позиции, каждый из которых представлет одну позицию 16-ричного числа.

   
 
 автор: DDK   (26.10.2006 в 13:10)   письмо автору
 
   для: cheops   (26.10.2006 в 13:04)
 

Хех... жалко, пропустил мимо глаз ту задачку :( Эхх..

   
 
 автор: Trianon   (26.10.2006 в 13:23)   письмо автору
 
   для: 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];
   }

   
 
 автор: cheops   (26.10.2006 в 13:44)   письмо автору
 
   для: Trianon   (26.10.2006 в 13:23)
 

В такой да, однако в подобных задачах обычно имеется ввиду, что двоичное число вводится пользователем и находится в строке, можно дробить строку на последовательности по 4 символа, а можно перевести в десятичный формат и воспользоваться вашей "хакерской" функцией :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования