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