现有$tmpBytes
$i = 1;
foreach($tmpBytes as $k)
{
echo "<br>".dechex($tmpBytes[$i]);
}
循环得到的是
89
50
4e
47
d
a
1a
...
与对应png格式文件的内容是一样的。
1,请问怎样保存成png图片
2,请问这$i为什么要从1开始才是正确的(难道不是从0开始)
以下不成功
$path = "1.png";
$file = fopen($path,"wb");//打开文件准备写入
fwrite($file,pack('H*', $tmpBytes));//写入
fclose($file);//关闭
$i = 1;
foreach($tmpBytes as $k)
{
echo "<br>".dechex($tmpBytes[$i]);
}
循环得到的是
89
50
4e
47
d
a
1a
...
与对应png格式文件的内容是一样的。
1,请问怎样保存成png图片
2,请问这$i为什么要从1开始才是正确的(难道不是从0开始)
以下不成功
$path = "1.png";
$file = fopen($path,"wb");//打开文件准备写入
fwrite($file,pack('H*', $tmpBytes));//写入
fclose($file);//关闭
$path = "1.png";
$file = fopen($path,"wb");//打开文件准备写入
fwrite($file, $tmpBytes);//写入 $tmpBytes不就是二进制吗?
fclose($file);//关闭2,从0开始才是正确的。
$i = 1;
foreach($tmpBytes as $k)
{
echo "<br>".dechex($tmpBytes[$i]);
}会得到你说的结果吗?
fwrite($file,pack('H*', implode('',$tmpBytes)));看看
$tmpBytes 是一个与字节数组等价的数组,每一项的值在 0~255 范围里考虑到有 $i为什么要从1开始 一问,这个数组应该是由 unpack('C*',...) 得到的还原回去可以
$s = '';
foreach($tmpBytes as $ch) $s .= pack('C', $ch);可以
$s = '';
foreach($tmpBytes as $ch) $s .= chr($ch);可以
$s = join('', array_map('chr', $tmpBytes));还可以
array_unshift($tmpBytes, 'C*');
$s = call_user_func_array('pack', $tmpBytes);
总之使用 H 参数是错误的
pack('H*'... 是将十六进制表示的串转换成机器码
unpack('H*'... 是将机器码转换成十六进制表示的串