[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: decbin проблема.
Agahnim
Понадобилось переводить Десятичного в Бинарник. Для этого решил использовать стандартную функцию
decbin();


Проблема в том что если я задаю число для перевода вручную
echo decbin(2147483647);

Все получается отлично и выводятся нужные 32 единички и нолика.

Но вот если задаю это значение из пропаршнеого симплэксмлом документа

$DATA = simplexml_load_file("#") or false;
foreach ($DATA->items as $ITEMS) {
foreach ($ITEMS->item as $ITEM) {
$itemtoken = $ITEM->inventory;
echo $itemtoken , '<br>';
echo decbin($itemtoken);
}
}


Получается полнейшая печаль в виде 31й еденицы.

Думаю что проблема в том , как парсер преподносит числа. Вопрос - как заставить работать этот decbin();?



Спустя 17 минут, 8 секунд (20.10.2011 - 21:07) kirik написал(а):
а что за числа в этом $ITEM->inventory?

Спустя 2 минуты, 50 секунд (20.10.2011 - 21:09) Winston написал(а):
А если так ?
echo decbin((int)$itemtoken);

Спустя 5 минут, 53 секунды (20.10.2011 - 21:15) Agahnim написал(а):
Цитата (Winston)
А если так ?

То-же самое
Цитата (kirik)
а что за числа в этом $ITEM->inventory?

2147483730
2147483725
2147483688
и т.п.

Спустя 8 минут, 45 секунд (20.10.2011 - 21:24) Winston написал(а):
2^31 = 2147483647
Потому и выводятся 1
Вот и ответ на вопрос

Спустя 10 минут, 18 секунд (20.10.2011 - 21:34) Agahnim написал(а):
Цитата (Winston @ 20.10.2011 - 18:24)
2^31 = 2147483647
Потому и выводятся 1
Вот и ответ на вопрос

А теперь если прочитать верхний пост то ты увидишь что при
echo decbin( 2147483647);
выводятся не 31 единица а 32 правильных числа (проверил)

Спустя 3 минуты, 33 секунды (20.10.2011 - 21:38) Winston написал(а):
Цитата
simplexml_load_file("#")

Из интернета тянешь? Дай адрес.

Спустя 23 минуты, 47 секунд (20.10.2011 - 22:02) kirik написал(а):
Цитата (Agahnim @ 20.10.2011 - 14:34)
echo decbin( 2147483647);

выводятся не 31 единица а 32 правильных числа (проверил)

$nums = array(
2147483647, // 31
2147483730, // 32
2147483725, // 32
2147483688 // 32
);

foreach($nums as $num) {
echo 'Num: ' . $num . "\n";
echo 'Bin: ' . ($bin = decbin($num)) . "\n";
echo 'Len: ' . strlen($bin) . "\n\n";
}
/*
Num: 2147483647
Bin: 1111111111111111111111111111111
Len: 31

Num: 2147483730
Bin: 10000000000000000000000001010010
Len: 32

Num: 2147483725
Bin: 10000000000000000000000001001101
Len: 32

Num: 2147483688
Bin: 10000000000000000000000000101000
Len: 32
*/

Что я делаю не так?

Спустя 14 минут, 10 секунд (20.10.2011 - 22:16) Agahnim написал(а):
Цитата (kirik @ 20.10.2011 - 19:02)
Цитата (Agahnim @ 20.10.2011 - 14:34)
<pre class="sh_sourceCode" rel="php"><span class="sh_function">echo decbin</span><span class="sh_symbol">(</span> <span class="sh_number">2147483647</span><span class="sh_symbol">);</span></pre>
выводятся не 31 единица а 32 правильных числа (проверил)

$nums = array(
2147483647, // 31
2147483730, // 32
2147483725, // 32
2147483688 // 32
);

foreach($nums as $num) {
echo 'Num: ' . $num . "\n";
echo 'Bin: ' . ($bin = decbin($num)) . "\n";
echo 'Len: ' . strlen($bin) . "\n\n";
}
/*
Num: 2147483647
Bin: 1111111111111111111111111111111
Len: 31

Num: 2147483730
Bin: 10000000000000000000000001010010
Len: 32

Num: 2147483725
Bin: 10000000000000000000000001001101
Len: 32

Num: 2147483688
Bin: 10000000000000000000000000101000
Len: 32
*/

Что я делаю не так?

Числа со стороннего API тянутся - количество и сами числа от меня не зависят, но они гарантированно раскладываются в бинарник.

Спустя 36 секунд (20.10.2011 - 22:17) Winston написал(а):
Я вот, что не пойму, почему не получается привести к типу int ? :blink:
$itemtoken = 2147483730;
echo decbin($itemtoken); //10000000000000000000000001010010

$itemtoken = '2147483730';
echo decbin($itemtoken); //1111111111111111111111111111111

$itemtoken = '2147483730';
echo decbin((int)$itemtoken); //1111111111111111111111111111111

Спустя 7 минут, 6 секунд (20.10.2011 - 22:24) Agahnim написал(а):
Цитата (Winston @ 20.10.2011 - 19:17)
Я вот, что не пойму, почему не получается привести к типу int ? :blink:
$itemtoken = 2147483730;
echo decbin($itemtoken);        //10000000000000000000000001010010

$itemtoken = '2147483730';
echo decbin($itemtoken);        //1111111111111111111111111111111

$itemtoken = '2147483730';
echo decbin((int)$itemtoken);  //1111111111111111111111111111111

Вот и я о том же. Вот как с этим бороться то?

Спустя 28 минут, 58 секунд (20.10.2011 - 22:53) kirik написал(а):
Цитата (Winston @ 20.10.2011 - 15:17)
Я вот, что не пойму, почему не получается привести к типу int ? :blink:

Цитата (Agahnim @ 20.10.2011 - 15:24)
Вот и я о том же. Вот как с этим бороться то?


Я вот тож не пойму.. у вас денвер что-ли? user posted image

$itemtoken = 2147483730;
echo var_dump($itemtoken) . decbin($itemtoken) . "\n\n";

$itemtoken = '2147483730';
echo var_dump($itemtoken) . decbin($itemtoken) . "\n\n";

$itemtoken = (int) '2147483730';
echo var_dump($itemtoken) . decbin($itemtoken) . "\n\n";

/*
int(2147483730)
10000000000000000000000001010010

string(10) "2147483730"
10000000000000000000000001010010

int(2147483730)
10000000000000000000000001010010
*/

Спустя 24 минуты, 47 секунд (20.10.2011 - 23:17) Winston написал(а):
Цитата (kirik @ 20.10.2011 - 22:53)
Я вот тож не пойму.. у вас денвер что-ли?

Он самый smile.gif

Спустя 7 минут, 55 секунд (20.10.2011 - 23:25) kirik написал(а):
Цитата (Winston @ 20.10.2011 - 16:17)
Он самый

Что-то в нём есть, правда? Некая непредсказуемость, ощущение праздника с сюрпризами, что-ли smile.gif

Спустя 2 минуты, 43 секунды (20.10.2011 - 23:28) Winston написал(а):
Цитата (kirik @ 20.10.2011 - 23:25)
Что-то в нём есть, правда? Некая непредсказуемость, ощущение праздника с сюрпризами, что-ли

Для меня это первый сюрприз от денвера, раньше никаких сюрпрайзов не замечал smile.gif

Спустя 13 минут, 17 секунд (20.10.2011 - 23:41) kirik написал(а):
Winston
за время, проведённое мной на форуме это уже *дцатый случай smile.gif

Спустя 32 минуты, 4 секунды (21.10.2011 - 00:13) Игорь_Vasinsky написал(а):
а до этого что было ? поделись...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.