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

Начал работать с 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
(PHP) 4.3.11 bug с hex
    #33058332
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кавычки в первой строке обязательно использовать ?

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

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

но меня сейтчас интерисует ето bug новой версии или ето я не правильно впринципе использовал раньше (float)"0xd00" ?
А то много коду сейтчас переписывать :(
...
Рейтинг: 0 / 0
(PHP) 4.3.11 bug с hex
    #33058392
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Okramза
eval ('$s = '.$s.';');
спасибо!"Медвежья" услуга, имхо.$s = 0 + $s , тоже помогаетПредпочтительнее.но меня сейтчас интерисует ето bug новой версииСкорее это "фича" старой. Имхо, поведение было более чем не логично.А то много коду сейтчас переписывать :(На будущее будешь умнее - лучше не писать код на основе недокументированных "фич".
...
Рейтинг: 0 / 0
(PHP) 4.3.11 bug с hex
    #33058424
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
(PHP) 4.3.11 bug с hex
    #33058436
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лично мне
eval ('$s = '.$s.';');
больше нравится, но догадываюсь что медлено работать будет
...
Рейтинг: 0 / 0
(PHP) 4.3.11 bug с hex
    #33058524
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
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
(PHP) 4.3.11 bug с hex
    #33058572
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хочешь наступать на грабли - оформи это функцией. Даже если поведение в очередной раз изменится - исправить это не составит никакого труда - достаточно будет поменять лишь одну функцию. Да и написать её можно так, чтобы никогда не натыкаться на грабли.

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


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
(PHP) 4.3.11 bug с hex
    #33058630
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
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
(PHP) 4.3.11 bug с hex
    #33058631
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Пардон
Код: plaintext
1.
2.
function GetDataInHexAndDec($str){
  return floatval(preg_replace('#^0x([0-9a-fA-F]+).*#e','hexdec("$1")',$str));
}
конечно же.
...
Рейтинг: 0 / 0
(PHP) 4.3.11 bug с hex
    #33059062
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поскольку все другие участники форума молчат ...
зделаем вывод что проблема однозначно решена...или... ?

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

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

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

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


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

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


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