Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Представление числа в Шестнадцатиричном виде. 
:(
    Опции темы
AndreyCH
Дата 16.10.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Есть переменная $number = int(rand(256));
пусть будет так smile
можно ли распечатать это число как шестнадцатиричное с помощь обыкновенного Print ?
Или придется sprintf использовать?

PM   Вверх
nitr
Дата 16.10.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



AndreyCH, а что не так?

Код

#!/usr/bin/perl
use warnings;
use strict;

my $number = int(rand(256));
print sprintf("%x", $number);



--------------------
PM   Вверх
AndreyCH
Дата 16.10.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Минуя sprintf получается никак?
Этот пример у меня уже работал. smile И в общем меня все устраивает в этом варианте. Изучаю перл. Писал долго на C++... Тяжело после него на Perl. smile Но интересно. Так что чисто спортивный интерес. Много из синтаксических конструкций приводит в ... от восторга до полного недоумения.

PM   Вверх
GoodBoy
Дата 16.10.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Код
my $number = int(rand(256));
print unpack("H2", pack("C", $number)), "\n";


если выйдешь за 256, то Н2 придётся менять на Н3, Н4 и т.д.
тут есть одно отличие от sprintf - если будет число в пределах 15 (т.е. 0-F), то sprintf тебе вернёт 0-F, а этот вариант - 00-0F...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
nitr
Дата 16.10.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



вы объясните, чем не нравится sprintf smile

Добавлено через 12 минут и 47 секунд
GoodBoy, молодец, но они медленней sprintf
Да и помню мучился с ними smile когда на серваке был perl 5.003 smile))  (без возможности обновить)


--------------------
PM   Вверх
AndreyCH
Дата 16.10.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Второй пример мне подходит больше вот в такой задаче: Задачка стояла именно в том, чтобы сгенерить файлик со случайными числами в HEX формате причем если 0-15 то перед числом добавить 0. И никаких 0x перед числом. Я решил ее с помощью sprintf с условием (чтобы ноль добавить.)

Нет. Мне Perl все больше и больше нравится - когда есть несколько путей я почти свободен! smile

Это сообщение отредактировал(а) AndreyCH - 16.10.2007, 14:52
PM   Вверх
GoodBoy
Дата 16.10.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата(nitr @  16.10.2007,  15:31 Найти цитируемый пост)
но они медленней sprintf

да, где-то в 3 раза (проверял на 5.000.000 итераций 21/61 секунд)... но тут речь о скорости и не шла... smile


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
vadiml
Дата 17.10.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



print sprintf("%x", $number);

а почему просто не написать 
printf("%x", $number);

одним вызовом функции меньше
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.