Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
problem mit base_convert() [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
problem mit base_convert()


 
uni_php
23-06-2006, 23:00 
 
Hallo,

wenn ich in dem Script

<?php
/*02*/
/*03*/ //$i = base_convert(10001, 2, 10); // 17
/*04*/ //$i = 17;
/*05*/ //$i = bindec(10001); // 17
/*06*/
/*07*/ //$k = base_convert(11110, 2, 10); // 30
/*08*/ //$k = 30;
/*09*/ //$k = bindec(11110); // 30
/*10*/
/*11*/ echo ($i & $k)."\n";
/*12*/
?>

die Zeilen 4 und 8 aktiviere, dann wird 16 ausgegeben. Wenn ich 5 und 9 aktiviere wird auch 16 ausgegeben. Das verstehe ich. Wenn ich 3 und 7 aktiviere, dann wird eine 10 ausgegeben. Das verstehe ich nicht. Ich würde erwarten, dass in dem Fall auch eine 16 ausgegeben wird. Kann mir das jemand erklären? Vielen lieben Dank im Voraus.

 
Slava
23-06-2006, 23:19 
 
erst mal beruhige dich!
das ist kein Anomalie!
wenn du deine binere zahlen in hohkomas nimmst, dann wird es wunderbar klappen.:)

 
uni_php
23-06-2006, 23:35 
 
Danke für deine Antwort. Leider wird aber immer noch eine 10 ausgegeben, wenn ich die binären Zahlen in den Zeilen 3 und 7 in Hochkommas einschließe. Ich hätte aber eine 16 erwartet.
PHP Version 5.1.4

 
tcpip
23-06-2006, 23:46 
 
Interessante Frage.
Siehe das zweite und dritte Beispiel im manual, unter Bitwise Operators.

 
uni_php
23-06-2006, 23:55 
 
tcpip, vielen Dank für deine Antwort. Ohne die wäre ich wohl nicht drauf gekommen. base_convert() gibt eine Zeichenkette zurück. In den anderen Fällen (also in den Zeilen 4 und 5 für $i) ist $i eine Zahl. Man kann also $i = (int) base_convert(10001, 2, 10); schreiben (und für $k genauso), damit es funktioniert. Denn dann wird die Rückgabe von base_convert() in eine Zahl konvertiert.

Vielen vielen Dank nochmal.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:03 Uhr.