zoukankan      html  css  js  c++  java
  • ArrayBuffer与字符串的互相转换

    ArrayBuffer与字符串的互相转换

    ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的。假定字符串采用UTF-16编码(JavaScript的内部编码方式),可以自己编写转换函数。

    // ArrayBuffer转为字符串,参数为ArrayBuffer对象
    function ab2str(buf) {
    return String.fromCharCode.apply(null, new Uint16Array(buf));
    }
    
    // 字符串转为ArrayBuffer对象,参数为字符串
    function str2ab(str) {
    var buf = new ArrayBuffer(str.length*2); // 每个字符占用2个字节
    var bufView = new Uint16Array(buf);
    for (var i=0, strLen=str.length; i<strLen; i++) {
    bufView[i] = str.charCodeAt(i);
    }
    return buf;
    }

    PHP接收二进制流并生成文件

    <?php
        /** 二进制流生成文件
        * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input
        * $GLOBALS['HTTP_RAW_POST_DATA'] 和 php://input 都不能用于 enctype=multipart/form-data
        * @param    String  $file   要生成的文件路径
        * @return   boolean
        */
        function binary_to_file($file){
            $content = $GLOBALS['HTTP_RAW_POST_DATA'];  // 需要php.ini设置
            if(empty($content)){
                $content = file_get_contents('php://input');    // 不需要php.ini设置,内存压力小
            }
            $ret = file_put_contents($file, $content, true);
            return $ret;
        }
        
        // demo
        binary_to_file('photo/test.png');
    ?>

    php 字符串转二进制流

    <?
    header("Content-type: text/html; charset=utf-8");    
      
    /**
    * 将字符串转换成二进制
    * @param type $str
    * @return type
    */
    function StrToBin($str){
        //1.列出每个字符
        $arr = preg_split('/(?<!^)(?!$)/u', $str);
        //2.unpack字符
        foreach($arr as &$v){
            $temp = unpack('H*', $v);
            $v = base_convert($temp[1], 16, 2);
            unset($temp);
        }
        return join(' ',$arr);
    }
      
    /**
    * 讲二进制转换成字符串
    * @param type $str
    * @return type
    */
    function BinToStr($str){
        $arr = explode(' ', $str);
        foreach($arr as &$v){
            $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));
        }
        return join('', $arr);
    }

    php关于发送和接受二进制数据

    之前做一个项目,从文件中读取图片为二进制,然后需要发送给客户端,由于echo输出的字符串只能为utf8编码的,所以弄了很久也不知道要怎么把二进制发出去,今天终于找到了解决的办法,把读出的二进制用base64进行编码之后,就可以向字符串一样使用了。代码如下:

    $my_file = file_get_contents(‘1.jpg’);//读取文件为字符串
    $data=base64_encode($my_file);//用base64对字符串编码
    echo $data;//发送

    php将图片转成二进制流

    //获取临时文件名
    $strTmpName = $_FILES['file']['tmp_name'];
    
    //转成二进制流
    $strData = base64EncodeImage(strTmpName );
    
    //输出
    echo '<img src=',$strData,'>';
    
    function base64EncodeImage($strTmpName)
    {
        $base64Image = '';
        $imageInfo   = getimagesize($strTmpName);
        $imageData   = fread(fopen($strTmpName , 'r'), filesize($strTmpName));
        $base64Image = 'data:' . $imageInfo['mime'] . ';base64,' . chunk_split(base64_encode($imageData));
        return $base64Image;
    }

    相关链接:

    https://www.cnblogs.com/copperhaze/p/6149041.html

    https://blog.csdn.net/fdipzone/article/details/7473949#

    https://zhidao.baidu.com/question/1694649074633248428.html

    https://www.cnblogs.com/cyn126/p/3291624.html

    https://blog.csdn.net/onlymayao/article/details/86170721

  • 相关阅读:
    goland 安装包激活码
    go目录文件
    php 单表数据转化为json格式
    thinkphp分页查询,后台处理怎么做
    用js 获取url 参数 页面跳转 ? 后的参数
    约瑟夫问题
    openstack配置
    Python数据结构
    Python常用排序算法
    scrapy使用
  • 原文地址:https://www.cnblogs.com/7qin/p/10851883.html
Copyright © 2011-2022 走看看