Hallo lixx,
$o1 … $o5 sind Strings. In den nächsten Zeilen benutzt Du Bitoperatoren auf Strings. Von diesen Ergebnissen glaubst Du, dass sie hexadezimale Strings sind und wandelst Sie dort in Dezimalzahlen um.
Was Du wahrscheinlich möchtest, ist, dass $o1 … $o5 schon Integerzahlen sind. Also kannst Du entweder
$o1 = hexdec('10');
oder
$o1 = 0x10;
benutzen. Die hexdec()-Funktion in den echo-Statements fallen dann weg, denn Integerzahlen werden ja per default als Dezimalzahlen ausgegeben.
Schöne Grüße,
Olaf