协议的要求如下:
字段名 字节数 类型 描述
Total_Length 4 Unsigned Integer 消息总长度(含消息头及消息体)
Command_Id 2 Unsigned Short 命令类型
0x0001表示更新操作
0x0002表示资源下载
0x8000表示错误返回
URL_Length 1 Unsigned Char 备用URL的长度
URL URL_Length String 备用URL地址,注意用UTF-8编码
Version 1 Unsigned Char 版本号 目前是0x01跟据以上的要求,我应该怎么写数据流,然后生成一个二进制流文件?现在没有一点门路,谢谢!
字段名 字节数 类型 描述
Total_Length 4 Unsigned Integer 消息总长度(含消息头及消息体)
Command_Id 2 Unsigned Short 命令类型
0x0001表示更新操作
0x0002表示资源下载
0x8000表示错误返回
URL_Length 1 Unsigned Char 备用URL的长度
URL URL_Length String 备用URL地址,注意用UTF-8编码
Version 1 Unsigned Char 版本号 目前是0x01跟据以上的要求,我应该怎么写数据流,然后生成一个二进制流文件?现在没有一点门路,谢谢!
解决方案 »
- 阴沟翻船~~~~大家帮我看看~~~if都出问题
- 高手帮忙下面JS代码换成PHP,谢谢
- PHP判断文件夹是否存在的方法
- [东莞]招聘PHP程序员.
- 请问PHP能不能集成水晶报表?
- 谁做过PHP上传附件写入MSSQL数据库,请指教.
- 关于局域网发邮件的问题!请高手指点,谢谢!!
- 请问怎样把date("Y-m-d")转换为字符型
- require问题?帮忙。
- 求教关于PHP,建站的问题//?
- 【100分】有劳各位 征集域名 顶着有分 呵呵 来吧
- Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate
$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 "\n<br>转化为二进制 ...";$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;
}