Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) 4.3.11 bug с hex / 15 сообщений из 15, страница 1 из 1
11.05.2005, 18:18
    #33058289
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Привет всем!

Начал работать с PHP 4.3.11 (SunOS 5.9).

Перестало работать следующее
Код: plaintext
1.
2.
3.
$s = "0xd00";
$f = (float)$s;
echo $f;
результат 0 (раньше у меня такая проблема была и с 4.3.10 , решилась тем что сначала использовал 4.3.9 а потом 4.3.10-9)

хотя в PHP 4.3.9 или 4.3.10-9 или 4.3.10-13

результат 3328


У когото были такие траблы с етим ? И чем ето лечится ?
...
Рейтинг: 0 / 0
11.05.2005, 18:38
    #33058332
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
а кавычки в первой строке обязательно использовать ?

Как вариант :
Код: plaintext
1.
2.
3.
$s = "0xd00";
eval ('$s = '.$s.';');
$f = (float)$s;
echo $f;
...
Рейтинг: 0 / 0
11.05.2005, 18:59
    #33058368
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
мне по посту же строка приходит, поетому кавычки обезательны.

за
eval ('$s = '.$s.';');
спасибо!
$s = 0 + $s , тоже помогает

но меня сейтчас интерисует ето bug новой версии или ето я не правильно впринципе использовал раньше (float)"0xd00" ?
А то много коду сейтчас переписывать :(
...
Рейтинг: 0 / 0
11.05.2005, 19:14
    #33058392
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Okramза
eval ('$s = '.$s.';');
спасибо!"Медвежья" услуга, имхо.$s = 0 + $s , тоже помогаетПредпочтительнее.но меня сейтчас интерисует ето bug новой версииСкорее это "фича" старой. Имхо, поведение было более чем не логично.А то много коду сейтчас переписывать :(На будущее будешь умнее - лучше не писать код на основе недокументированных "фич".
...
Рейтинг: 0 / 0
11.05.2005, 19:26
    #33058424
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Guest На будущее будешь умнее - лучше не писать код на основе недокументированных "фич".

надеюсь ты Guest за свои слова отвечаеш.

И почему ты так агресивно настроен ?

я тоже нигде в доках не прочитал что

$f = (float)$s;

будет работать даже если $s="0x..."

но и я только в коментариях нашол что

$foo = 1 + "0x10";
//$foo is 17 - i.e. PHP DOES recognize 0x10 as hex for 16.

тоесть можно использовать

$s = 0 + $s


Так что можеш ты Guest точно сказать как мне правильно по документированой "фиче" перевести строку в число
при чем сnрока может быть как dec так и hex

"100" = 100
"0x100" = 256

?
...
Рейтинг: 0 / 0
11.05.2005, 19:32
    #33058436
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
лично мне
eval ('$s = '.$s.';');
больше нравится, но догадываюсь что медлено работать будет
...
Рейтинг: 0 / 0
11.05.2005, 20:23
    #33058524
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Okramя тоже нигде в доках не прочитал что
$f = (float)$s;
будет работать даже если $s="0x..."
...
но и я только в коментариях нашол что
$foo = 1 + "0x10";
//$foo is 17 - i.e. PHP DOES recognize 0x10 as hex for 16.
тоесть можно использовать
$s = 0 + $shttp://www.php.net/manual/ru/language.types.string.php#language.types.string.conversion - тут конечно не говориться ничего про 0x..., но судя по всему поведение решили изменить. Уж не знаю, каковы на то истинные причины.Так что можеш ты Guest точно сказать как мне правильно по документированой "фиче" перевести строку в число
при чем сnрока может быть как dec так и hexНе хочешь наступать на грабли - оформи это функцией. Даже если поведение в очередной раз изменится - исправить это не составит никакого труда - достаточно будет поменять лишь одну функцию. Да и написать её можно так, чтобы никогда не натыкаться на грабли.И почему ты так агресивно настроен ?А сволочь я :) (С) КВН
Okram , попробуйте применить мозги, размышляя над комбинацией фактов "мне по посту же строка приходит" и над тем, что делает eval - и уж поверь мне, быстродействие тут вообще не при чём и никого не волнует.
...
Рейтинг: 0 / 0
11.05.2005, 20:45
    #33058572
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Не хочешь наступать на грабли - оформи это функцией. Даже если поведение в очередной раз изменится - исправить это не составит никакого труда - достаточно будет поменять лишь одну функцию. Да и написать её можно так, чтобы никогда не натыкаться на грабли.

так и зделаю (только не подумай что я раньше про ето не думал :) )


http://www.php.net/manual/ru/language.types.string.php#language.types.string.conversion - тут конечно не говориться ничего про 0x..., но судя по всему поведение решили изменить. Уж не знаю, каковы на то истинные причины.
вот ето и есть суть моего вопроса.




Почемуто уверен на 100% что в версии 4.3.11-01 или 4.3.11-02 или ... 4.3.11-0x
Мои скрипты заработают. (так было с 4.3.10)

И ещё
вопрос

Так что можеш ты Guest точно сказать как мне правильно по документированой "фиче" перевести строку в число
при чем сnрока может быть как dec так и hex

"100" = 100
"0x100" = 256

?

открыт ...
...
Рейтинг: 0 / 0
11.05.2005, 21:43
    #33058630
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
OkramТак что можеш ты Guest точно сказать как мне правильно по документированой "фиче" перевести строку в число
при чем сnрока может быть как dec так и hexПросто не надо использовать никаких "фич"
Код: plaintext
1.
2.
function GetDataInHexAndDec($str){
  return floatval(preg_replace('#^0x([0-9a-fA-F]+).*#e','hexdec("$1")','0x100'));
}
...
Рейтинг: 0 / 0
11.05.2005, 21:44
    #33058631
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Пардон
Код: plaintext
1.
2.
function GetDataInHexAndDec($str){
  return floatval(preg_replace('#^0x([0-9a-fA-F]+).*#e','hexdec("$1")',$str));
}
конечно же.
...
Рейтинг: 0 / 0
12.05.2005, 10:03
    #33059062
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Поскольку все другие участники форума молчат ...
зделаем вывод что проблема однозначно решена...или... ?

Спасибо большое тебе дорогой Guest :)
И вовсе ето не "Медвежья" услуга, имхо. :)
...
Рейтинг: 0 / 0
12.05.2005, 11:07
    #33059234
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
OkramИ вовсе ето не "Медвежья" услуга, имхо. :)eval данных, приходящих от пользователя? Ну-ну...
Предлагаю поговорить об этом чуть позже, когда вас таки сломают :)
...
Рейтинг: 0 / 0
12.05.2005, 11:21
    #33059280
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
да нет :)

я за то , что твоя

function GetDataInHexAndDec($str){
return floatval(preg_replace('#^0x([0-9a-fA-F]+).*#e','hexdec("$1")',$str));
}

действительно будет мне полезна !


eval данных, приходящих от пользователя? Ну-ну...
Предлагаю поговорить об этом чуть позже, когда вас таки сломают :)
поделись секретом, как ето возможно ?
p.s. я eval никогда не использовал :)
...
Рейтинг: 0 / 0
12.05.2005, 11:49
    #33059374
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Okramподелись секретом, как ето возможно ?Простой безопасный пример (специально даю безопасный, только как демонстрацию возможностей)
Код: plaintext
1.
$s = 'phpinfo()'; // напоминаю, что это приходит от пользователя, и там может быть что угодно
eval ('$s = '.$s.';');
p.s. я eval никогда не использовал :)http://se.php.net/eval
...
Рейтинг: 0 / 0
12.05.2005, 12:06
    #33059432
Okram
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) 4.3.11 bug с hex
Ах, как я был глуп, как я ошибался ... :(

спасибо!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) 4.3.11 bug с hex / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]