16进制的方式大开????
听不明白楼主需要怎么样。你是不是要把文件 显示为 16进制?????
象用WinHEX打开时那样显示?

解决方案 »

  1.   

    难道楼住想修改exe文件??牛帮你顶一把
      

  2.   

    2进制16进制都只是数据的表现形式而已,和你用不用bin2hex没有关系
    所谓的16进制编辑器显示的16进制,只是方便人看而已。你用bin2hex变成人看懂的16进制后,让人修改后可以用下面的函数还原成2进制数据,并用fopen,fwrite重新写入进去。不过由于这是一次读取一次写入,对于大文件而言效率不高
    function hex2bin($hex_string) 
    {
    if(preg_match('/^[0-9a-f]+$/i', $hex_string))
    return pack('H*', (string)$hex_string);
    $len=strlen($hex_String);
    return $hex_string;

    }
      

  3.   

    哈....感谢...
    能不能细细诉说一下pack()的用处....
    这个问题现在有点好办了...
    我是首先将2进制方式读取出来
    转换成为16进制模式...的确,东西还是一样的东西....
    然后,其他人输入要修改的东西,如找到0000FF,在Offset 18上面,最后修改为FFFFFF.
    现在....经过你的方式...可以直接将他们变成bin了...
    我本来还想用一个16进制到ASCII的function
    {
    //Remove delimiters from hex string
    $hex = str_replace($delimeter, "", $hex);
        $strLength = strlen($hex);
        $returnVal = '';    for($i=0; $i<$strLength; $i += 2)
        {
    $dec_val = hexdec(substr($hex, $i, 2));
            $returnVal .= chr($dec_val);
        }
        return $returnVal;
    }
    变成ASCII,然后再想方法变成bin写入(不过听说PHP的功能都是bin safe的...可能不需要再变成ASCII了)
      

  4.   

    pack的资料网上很多的,很多脚本语言有这个的。呵呵,用法都一样
      

  5.   

    等等...我想到了...
    干脆...直接读取文件,得到ASCII的String然后将用户要求修改的原来HEX和后来HEX都变成ASCII!
    然后利用Offset直接查找修改...
    然后使用ASCII的方式存放回去...
    听说PHP是binary safe的...
    所以...这个应该是最快的方式....