×

php处理二进制流文件

php处理二进制流文件(php 进制转换)

admin admin 发表于2023-04-01 18:12:07 浏览39 评论0

抢沙发发表评论

本文目录一览:

php二进制流输出文件出错

你要的内容太多了,只能简单的说下。fopen (PHP 3, PHP 4, PHP 5)fopen -- 打开文件或者 URL 说明resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。 如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。 如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。 注意: 所支持的协议列表见附录 N。某些协议(也被称为 wrappers)支持 context 和/或 php.ini 选项。参见相应的页面哪些选项可以被设定(例如 php.ini 中用于 http wrapper 的 user_agent 值)。 注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见参考 CLX, Stream Functions。注意: 自 PHP 4.3.2 起,对所有区别二进制和文本模式的平台默认模式都被设为二进制模式。如果在升级后脚本碰到问题,尝试暂时使用 't' 标记,直到所有的脚本都照以下所说的改为更具移植性以后。 mode 参数指定了所要求到该流的访问类型。可以是以下: 表 1. fopen() 中 mode 的可能值列表mode说明'r'只读方式打开,将文件指针指向文件头。 'r+'读写方式打开,将文件指针指向文件头。 'w'写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+'读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'a+'读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'x'创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 'x+'创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 注意: 不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。 如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。 Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为

如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la

php将图片文件转换成二进制输出的方法

本文实例讲述了php将图片文件转换成二进制输出的方法。分享给大家供大家参考。具体实现方法如下:

1

2

3

4

header(

Content-type:

image/jpeg);

$PSize

=

filesize('1.jpg');

$picturedata

=

fread(fopen('1.jpg',

r),

$PSize);

echo

$picturedata;

就这么简单4行代码,就将图片以二进制流的形式输出到客户端了,和打开一张图片没有任何区别。

这里需要注意的是,发送的header要根据具体情况而定,不一定都是image/jpeg。JPG的就是image/jpeg,但PNG的就是image/png.不同类型的图片输出不同的头部。

PHP关于获取二进制数据流转换为文件的方法

?php

$bin= bstr2bin($json);

file_put_contents('../somefold/',$bin);

function bstr2bin($input){

// Binary representation of a binary-string

if (!is_string($input)) return null; // Sanity check

// Unpack as a hexadecimal string

$value = unpack('H*', $input);

// Output binary representation

$value = str_split($value[1], 1);

$bin = '';

foreach ($value as $v){

$b = str_pad(base_convert($v, 16, 2), 4, '0', STR_PAD_LEFT);

$bin .= $b;

}

return $bin;

php怎样将二进制流存到文件中?

整形转化成 2二进制 可以用  base_convert:

$str = 0x8000;

 

echo $str2 = base_convert($str, 16, 2);

echo 'br';

echo base_convert($str2, 2, 16);

[code]

 

字符串 文件等 可以考虑用 pack 和 unpack 转化成二进制

 

[code=PHP]

$file1 = 'F:/46.gif';           //随便拷一个图片作为测试用

$file2 = 'F:/test.txt';         //生成的二进制流保存在这个文件里

$file3 = 'F:/47.gif';           //由二进制流还原成的文件

 

$size = filesize($file1);

 

echo '文件大小为:'.$size;

echo "\nbr转化为二进制 ...";

 

$content = file_get_contents($file1);

$content = bstr2bin($content);

 

 

$fp = fopen($file2, 'w');

fwrite($fp, $content);

fclose($fp);

 

$size2 = filesize($file2);

 

echo '转化成二进制后文件大小为:'.$size2;

 

$content = bin2bstr($content);

 

$fp = fopen($file3, 'w');

fwrite($fp, $content);

fclose($fp);

 

 

function bin2bstr($input)

// Convert a binary expression (e.g., "100111") into a binary-string

{

  if (!is_string($input)) return null; // Sanity check

 

  // Pack into a string

  $input = str_split($input, 4);

  $str = '';

  foreach ($input as $v)

  {

      $str .= base_convert($v, 2, 16);

  }

   

  $str =  pack('H*', $str);

   

  return $str;

}

 

function bstr2bin($input)

// Binary representation of a binary-string

{

  if (!is_string($input)) return null; // Sanity check

 

  // Unpack as a hexadecimal string

  $value = unpack('H*', $input);

   

  // Output binary representation

  $value = str_split($value[1], 1);

  $bin = '';

  foreach ($value as $v)

  {

      $b = str_pad(base_convert($v, 16, 2), 4, '0', STR_PAD_LEFT);

       

      $bin .= $b;

  }

   

  return $bin;

}