Hi,

Monday, July 14, 2003, 6:00:04 PM, you wrote:
GS> A bit off topic
GS> Im trying to figure out how to convert BigEndian byte words to integers.
For example ->>
GS> 0 0 0 18  =  18

GS> The only way I know how to convert this is by writing down on paper, and 
GS> writing  8 4 2 1 above the numbers and adding up the values.
GS> Trying to figure out a way via plain old math/php has me stumped at the 
GS> moment. (Maybe some sleep is in order)
GS> Any help and or tips would be greatly appreciated.

GS> Thanks

Here is a simple class that should manipulate bigendian stuff
(untested)

<?php
class bigEndian {
        var $data //pointer to data
        var $ptr  //current position in data
        function bigEndian(&$data){
                $this->data =& $data;
                $this->ptr = 0;
        }
        function getChar(){
                $r = ord($this->data[$this->ptr]);
                $this->ptr ++;
                return $r;
        }
        function getWord(){
                $r = (ord($this->data[$this->ptr]) << 8) | 
ord($this->data[$this->ptr+1]);
                $this->ptr += 2;
                return $r;
        }
        function getDoubleWord(){
                $r = (ord($this->data[$this->ptr]) << 24) | 
(ord($this->data[$this->ptr+1]) << 16) | (ord($this->data[$this->ptr+2]) << 8) | 
ord($this->data[$this->ptr+3]);
                $this->ptr += 4;
                return $r;
        }
}

//usage
$datablock = file_get_contents($filename);
$be = new bigEndian($datablock);
$firstword = $be->getWord() //bytes 0,1
$char = $be->getChar() //byte 2
$doubleword = $be->getDoubleWord() //bytes 3,4,5,6
.
.

?>

-- 
regards,
Tom


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to