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

原文地址:https://www.cnblogs.com/7qin/p/10851883.html

时间: 2024-10-11 20:44:53

ArrayBuffer与字符串的互相转换的相关文章

HTML5 Blob与ArrayBuffer、TypeArray和字符串String之间转换

1.将String字符串转换成Blob对象 //将字符串 转换成 Blob 对象 var blob = new Blob(["Hello World!"], { type: 'text/plain' }); console.info(blob); console.info(blob.slice(1, 3, 'text/plain')); 2.将TypeArray  转换成 Blob 对象 //将 TypeArray 转换成 Blob 对象 var array = new Uint16A

[转]JS中对象与字符串的互相转换

原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON.parse方法在遇到不可解析的字符串时,会抛出SyntaxError异常. 即:JSON.parse(text, reviver),This method parses a JSON text t

5.6.3.5 字符串的大小写转换

ECMAScript中涉及到字符串的大小写转换的方法有4 个:toLowerCase().toLocaleLowerCase().toUpperCase()和toLocaleUpperCase().其中,toLowerCase()和toUpperCase()是两个经典的方法,借鉴自java.lang.String中的同名方法.而 toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的实现.对有些地区来说,针对地区的方法与其通用的方法得到的结果相同,但

数组-05. 字符串字母大小写转换(10)

输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一行中按照要求输出转换后的字符串. 输入样例: Hello World! 123# 输出样例: hELLO wORLD! 123 import java.util.Scanner; public class Main { public static void main(String[] args) {

*数组-05. 字符串字母大小写转换

1 /* 2 * Main.c 3 * E5-数组-05. 字符串字母大小写转换 4 * Created on: 2014年8月20日 5 * Author: Boomkeeper 6 *********部分通过********* 7 */ 8 9 #include <stdio.h> 10 11 int main(void){ 12 13 char str[40]={-1}; 14 15 gets(str); 16 17 int i,index; 18 for(i=0;i<40;i++

【转】c# 字符串大小写混合转换

c# 字符串大小写混合转换 我是个.net萌新,在大学是计算机应用专业 学的比较杂 出来准备走net方向  培训了两个月了 今天被出了一道上机题  题本来是挺简单的  输入一个字符 如果是大写则转换为小写  如果是小写则转换为大写 难点在于后来我们自发的延伸  并且发现网上也没有针对这种情况的解决方案 所以我自己写了一个应对这种方法了类  发上来给大家共享下  比自带的转化方法更无脑一键一点 而且可以针对于大小写混合则字符串 如ASDFasf$%#%^645765127aAFSAasdfasd

Python一些字符串判断和转换

设s是字符串: s.isalnum()      判断所有字符都是数字或者字母 s.isalpha()  判断所有字符都是字母 s.isdigit()  判断所有字符都是数字 s.islower() 判断 所有字符都是小写 s.isupper()  判断所有字符都是大写 s.istitle()  判断所有单词都是首字母大写,像标题 s.isspace()  判断所有字符都是空白字符 s.upper() 所有小写字符转换成大写 s.lower() 所有大写字符转换成小写 s.capitalize(

JSON实用类,用来实现对象和JSON字符串的互相转换

import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Lis

06-2. 字符串字母大小写转换(10)

输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一行中按照要求输出转换后的字符串. 输入样例: Hello World! 123# 输出样例: hELLO wORLD! 123 1 #include <stdio.h> 2 3 int main() 4 { 5 char s[40]; 6 int i = 0; 7 do { 8 scanf(&qu