您好,欢迎访问一九零五行业门户网

JavaScript前端开发之实现二进制读写操作_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 6)))); back.push((128 | (63 & code))) } else if (code >= 2048 && code > 12)))); back.push((128 | (63 & (code >> 6)))); back.push((128 | (63 & code))) } } for (i = 0; i 255) { back[i] &= 255 } } if (isgetbytes) { return back } if (bytesize > 8, bytesize & 255].concat(back); } }, /** * 把一串字节流按照utf8编码读取出来 * @param arr 字节流 * @returns {string} 读取出来的字符串 */ readutf: function (arr) { if (object.prototype.tostring.call(arr) == [object string]) { return arr; } var utf = , _arr = this.init(arr); for (var i = 0; i < _arr.length; i++) { var one = _arr[i].tostring(2), v = one.match(/^1+?(?=0)/); if (v && one.length == 8) { var byteslength = v[0].length, store = _arr[i].tostring(2).slice(7 - byteslength); for (var st = 1; st 8) & 255); this.write(v & 255); this.writen += 2 }, /** * 把字符串按照utf8的格式写入缓冲区,writen往后移指定的位 * @param {string} str 字符串 * @return {array} 缓冲区 */ writeutf: function (str) { var val = binarypot.writeutf(str); [].push.apply(this.pool, val); this.writen += val.length; }, /** * 把缓冲区字节流的格式从0至256的区间改为-128至128的区间 * @returns {array} 转换后的字节流 */ tocomplements: function () { var _tpool = this.pool; for (var i = 0; i 128) { _tpool[i] -= 256 } } return _tpool }, /** * 获取整个缓冲区的字节 * @param {boolean} iscom 是否转换字节流区间 * @returns {array} 转换后的缓冲区 */ getbytesarray: function (iscom) { if (iscom) { return this.tocomplements() } return this.pool }, /** * 把缓冲区的字节流转换为arraybuffer * @returns {arraybuffer} * @throw {error} 不支持arraybuffer */ toarraybuffer: function () { if (supportarraybuffer) { return new arraybuffer(this.getbytesarray()); } else { throw new error('not support arraybuffer'); } }, clear: function () { this.pool = []; this.writen = this.position = 0; } }; return stream;});
如何使用?

以后,我可以不用为浏览器段处理二进制而发愁了!!!希望本文分享对大家学习javascript二进制相关知识有所帮助。
其它类似信息

推荐信息