前端将二进制数据流转为文件_JavaScript前端开发之实现二进制读写操作-程序员宅基地

技术标签: 前端将二进制数据流转为文件  

关于javascript前端开发之实现二进制读写操作的相关介绍,请看以下内容详解,本文介绍的非常详细,具有参考价值。

由于种种原因,在浏览器中无法像nodejs那样操作二进制。

最近写了一个在浏览器端操作读写二进制的帮助类

!function (entrance) {

"use strict";

if ("object" === typeof exports && "undefined" !== typeof module) {

module.exports = entrance();

} else if ("function" === typeof define && define.amd) {

define([], entrance());

} else {

var f;

if ("undefined" !== typeof window) {

f = window;

} else {

throw new Error('wrong execution environment');

}

f.TinyStream = entrance();

}

}(function () {

var binaryPot = {

/**

* 初始化字节流,把-128至128的区间改为0-256的区间.便于计算

* @param {Array} array 字节流数组

* @return {Array} 转化好的字节流数组

*/

init: function (array) {

for (var i = 0; i < array.length; i++) {

array[i] *= 1;

if (array[i] < 0) {

array[i] += 256

}

if(array[i]>255){

throw new Error('不合法字节流')

}

}

return array;

},

/**

* 把一段字符串按照utf8编码写到缓冲区中

* @param {String} str 将要写入缓冲区的字符串

* @param {Boolean} isGetBytes 是否只得到内容字节(不包括最开始的两位占位字节)

* @returns {Array} 字节流

*/

writeUTF: function (str, isGetBytes) {

var back = [],

byteSize = 0;

for (var i = 0; i < str.length; i++) {

var code = str.charCodeAt(i);

if (code >= 0 && code <= 127) {

byteSize += 1;

back.push(code);

} else if (code >= 128 && code <= 2047) {

byteSize += 2;

back.push((192 | (31 & (code >> 6))));

back.push((128 | (63 & code)))

} else if (code >= 2048 && code <= 65535) {

byteSize += 3;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34596480/article/details/112017880

智能推荐

jquery实现点击图片在弹出层显示大图_jquery 弹出大图-程序员宅基地

文章浏览阅读1.2w次。jquery实现点击图片在弹出层显示大图,点击弹出层,图片放大效果关闭。&lt;!--HTML部分:--&gt;&lt;td width="350"&gt; &lt;img height="100" width="100" class="pimg" src="http://img2.imgtn.bdimg.com/it/u=61392142,3898643530_jquery 弹出大图

Java版的水仙花数判断-程序员宅基地

文章浏览阅读183次。判断一个数是否为”水仙花数”,所谓”水仙花数”是指这样的一个数:首先是一个三位数,其次,其各位数字的立方和等于该数本身。例如:371是一个”水仙花数”,371=3。1或者0(1代表此数为水仙花数,0代表此数不是水仙花数)

wordpress 自定义_使用Kirki的快速WordPress自定义选项-程序员宅基地

文章浏览阅读699次。wordpress 自定义One thing WordPress users have grown accustomed to, is easy, no code required theme customization options. The idea is: download a theme, activate it in the Themes panel, access the Custo..._$wp_customize->add_panel

C语言-工程实践-万年历_输入任一年将显示出该年的所有月份日期,对应的星期,2)注意闰年情况。-程序员宅基地

文章浏览阅读1.3k次,点赞3次,收藏20次。万年历1 引言1.1 国内外现状1.2 本课题研究的迫切性1.3 本文的主要工作2 需求分析2.1 系统目标2.2 系统功能2.3 开发环境及工具2.3.1 运行环境2.3.2 vc++介绍2.3.3 开发语言3 系统总体结构设计3.1 系统结构基本简介3.2 系统功能模块及设计3.2.1 数据结构设计(系统详细模块流程图)3.2.2 功能模块介绍4 系统测试与分析4.1 测试4.2 调试过程中遇到的主要问题5.附源码:1 引言1.1 国内外现状C语言作为一门通_输入任一年将显示出该年的所有月份日期,对应的星期,2)注意闰年情况。

redis如何实现异步队列_redis数据库不能执行异步队列-程序员宅基地

文章浏览阅读2.3k次。一.如何使用Redis做异步队列1.使用List作为队列, RPUSH生产消息, LPOP消费消息➢缺点:没有等待队列里有值就直接消费➢弥补:可以通过在应用层引入Sleep机制去调用LPOP重试2. BLPOP key [key .. timeout :阻塞直到队列有消息或者超时➢缺点:只能供-一个消费者消费二.如何使用Redis做异步队列pub/sub :主题订阅者模式发送者(..._redis数据库不能执行异步队列

C#图片放大缩小拖动_c# 图片查看器 缩放拖动-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏24次。1.Panel里放picturebox,picturebox大小与panel相同。放大缩小:在窗体load事件中加入this.MouseWheel += splitContainer1_Panel1_MouseWheel;(我用的是splitContainer,panel同理)void splitContainer1_Panel1_MouseWheel(object sender..._c# 图片查看器 缩放拖动

随便推点

Unity实现文字逐个出现的特效_unity逐字出现-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏19次。把下面的代码直接挂载到Text组件上面即可using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI; public class TextEffects : MonoBehaviour{ string str; Text tex; int i = 0; //调整这个可以调整出现的速度 int index = 0; s_unity逐字出现

Mybatis 3.5.X的特性与BUG_apache mybatis 3.5.x-程序员宅基地

文章浏览阅读2.3k次。Mybatis 3.5.X的特性与BUGMyBatis 3.5.Xmybatis-3.5.0改善:Bug 修复:不向后兼容的改变(包括3.4.6版本及之前版本)mybatis-3.5.1改善:Bug 修复:不向后兼容的修改MyBatis 3.5.Xmybatis-3.5.0MyBatis 3.5.0 requires Java 8 and later.改善:Avoid ‘Illega..._apache mybatis 3.5.x

Java解析cron表达式实战-程序员宅基地

文章浏览阅读1.1k次。在我们实际开发中多数会在一些定时任务中试用表达式来控制任务的执行时间、频率等。有时候在围绕任务调度进行开发的时候,是需要通过解析表达式来获取一些信息,例如需要获取表达式得下一次执行时间,或者让用户在界面上设置时间,我们来生成cron表达式。那么如何来实现这些需求,这里我推荐cron-utils._java解析cron表达式

Ubuntu16.04+anaconda2+caffe+matcaffe+pycaffe_ubuntu16.04配置pycaffe和matcaffe-程序员宅基地

文章浏览阅读604次。install anaconda2+caffe https://blog.csdn.net/Dark_Miro/article/details/78355292?locationNum=9&amp;fps=1 make matcaffe error https://blog.csdn.net/weiqi_fan/article/details/71023222 make mattest e..._ubuntu16.04配置pycaffe和matcaffe

【Shiro 自学笔记二】自定义 Realm 实现 MD5 加密、加盐与再散列_md5 中的realm-程序员宅基地

文章浏览阅读356次。文章目录什么是MD5加盐散列Shiro 实现 MD5 加密基本 MD5 加密加盐与散列自定义 Realm 实现登录验证自定义 Realm 实现 MD5 加密声明加密算法声明加盐和散列上一期我们完成了基本的登录操作,然而,直接通过明文密码登录显然是非常不安全的。因此,我们必须对密码进行加密以加强信息的安全性。什么是MD5MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value)_md5 中的realm

给一个二值图,求出最大连通区域(可用深度优先和广度优先算法)_一张边界图,如何连通并二值化-程序员宅基地

文章浏览阅读3.7k次。转载自:https://www.codetd.com/article/6541194这个问题是我在SLAM求职宝典系列D2篇中遗留的问题,因为内容较多现在单独将其列出进行解答。本篇内容分为四个部分:目录(1)二值图(2)求最大连通区域的算法(3)代码实现,以及DFS 和BFS(4) OpenCV中连通域的求解(C++ & Python)..._一张边界图,如何连通并二值化