PHP实现java中的DatainputStream类

来源:互联网 发布:c语言写小游戏 编辑:程序博客网 时间:2024/06/17 09:52
<?phpclass DataInputStream {    private $stream = null;    /**     * 构造函数     *     * @param stream of fopen .. $in     */    public function __construct( $in ){        $this->stream = $in;    }    /**     * 析构函数     *     */    public function __destruct(){        @fclose( $this->stream );    }    /**     * 读取字节     *     * @param int sizeof you want to read $len     * @return string     */    private function read( $len=1 ){        $len = intval( $len );        if( $len>0 ) {            if( !feof( $this->stream ) ) {                $read = @fread($this->stream,$len);                if( strlen($read)!=$len ){                    throw new Exception('流文件已经到末尾,读取错误',222);                } else {                    return $read;                }            } else {                throw new Exception('流文件已经到末尾,读取错误',222);            }        } else {            return '';        }    }    /**     * 读取一个字节,并转换成int     *     * @return int     */    public function readByte(){        return hexdec(bin2hex($this->read(1)));    }    /**     * 短整形     *     * @return int     */    public function readShort(){        return hexdec(bin2hex($this->read(2)));    }    /**     * 整形数据     *     * @return int     */    public function readInt(){        return hexdec(bin2hex($this->read(4)));    }    /**     * 读取一个字符串     *     * @return string     */    public function readUTF(){        $len = $this->readShort();        return $this->read($len);    }    /**     * 读取指定长度的数据,并作为字符串返回,图片等二进制文件,可能需要这样读取.     *     * @param int $len     * @return unknown     */    public function readFully( $len ) {        return $this->read( $len );    }    /**     * readUTF的别名     *     * @return unknown     */    public function readString(){        return $this->readUTF();    }    /**     * 长整形.     *     * @return unknown     */    public function readLong(){        return hexdec(bin2hex($this->read(8)));    }}
0 0
原创粉丝点击