Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析
Nodejs 中的 Buffer
buffer模块的基础API
nodejs的fs模块
Buffer对象可以被写入本地文件系统,或者通过网络写入远程的机器中,或者转换为字符串来做更多的操作,或者不做任何处理。
Nodejs中的 Stream
什么是Stream,为什么要有Stream
Stream模块基本用法
Stream的应用场景
浏览器中的 ArrayBuffer
ArrayBuffer 对象表示用于存储不同类型化数组的数据的原始数据缓冲区。无法直接读取或写入 ArrayBuffer,但可以将它传递给类型化数组或 DataView 对象 来解释原始缓冲区。可以使用 ArrayBuffer 来存储任何类型的数据(或混合类型的数据)。
ArrayBuffer的查看和编辑视图——类型化数组和DataView
什么是类型化数组
类型化数组类型
类型化数组操作API
DataView
下表列出了 DataView 对象的方法。
|
方法 |
描述 |
|---|---|
|
在相对于视图开始处的指定字节偏移量位置处获取 Int8 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Uint8 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Int16 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Uint16 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Int32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Uint32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Float32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处获取 Float64 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Int8 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Uint8 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Int16 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Uint16 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Int32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Uint32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Float32 值。 |
|
|
在相对于视图开始处的指定字节偏移量位置处存储 Float64 值。 |
一种特殊的类型化数组
类型化数组理解时要注意的特点
ArrayBuffer初始化时的length是以字节(byte)为单位的而不是位(bit),
通过缓冲区初始化类型化数组的时候,offerset代表的缓冲区中的偏移量,也
而类型化数组初始化时的length是类型化数组中的length代表的并不是此次初始化要使用的缓冲区中的字节长度,而是类型化数组中的元素个数。
Uint32Array = new Uint32Array ( buffer, byteOffset, length);
所以例如Uint32Array实际被使用的缓冲区中的字节应该是从第byteOffset个到第byteOffset+4*length个字节,而不是从第byteOffset个字节到byteOffset+length个字节 类型化数组只是视图,原始数据存在ArrayBuffer中,原始数据发生变化,所有视图都变化
浏览器中的使用实例
var req = new XMLHttpRequest();
req.open('GET', "http://www.example.com");
req.responseType = "arraybuffer";
req.send(); req.onreadystatechange = function () {
if (req.readyState === 4) {
var buffer = req.response;
var dataview = new DataView(buffer);
var ints = new Uint8Array(buffer.byteLength);
for (var i = 0; i < ints.length; i++) {
ints[i] = dataview.getUint8(i);
}
alert(ints[10]);
}
}
var websocket = new WebSocket(sUri);
websocket.binaryType = "arraybuffer" ;
nodejs中的buffer和浏览器中的Uint8Array的关系
Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析的更多相关文章
- nodejs学习笔记<一>安装及环境搭建
零零散散学了几天nodejs,进度一直停滞不前,今天沉下心来好好看了下nodejs的介绍和代码.自己也试着玩了下,算是有点入门了. 这里来做个学习笔记. ——————————————————————— ...
- 我是如何学习NodeJs
实际上在开始的时候我已经对NodeJS有了一定的了解. 比如我知道它是居于Javascript语言的服务器端web Server,比如我知道它的优势在于它的性能,而造成性能优异的原因在于高效的V8引擎 ...
- 学习Nodejs的第一步
最近看了几本关于Node.js的书,本来个人技术分享网站http://yuanbo88.com/是打算用Node.js作为服务器端语言来处理后台的,后来又改成了PHP(也是自己研究,毕竟网上DEMO多 ...
- webpack环境搭建开发环境,JavaScript面向对象的详解,UML类图的使用
PS:因为所有的设计模式都是基于面向对象来完成的,所以在讲解设计模式之前先来过一下面向对象都有哪些知识点 搭建开发环境 初始化npm环境 下载安装nodejs安装即可,nodejs自带npm管理包,然 ...
- 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...
- 《JavaScript语言精粹》学习笔记
一.in的用法 for...in 枚举一个对象的所有可枚举属性 检测DOM/BOM属性 if ("onclick" in elem) { // 元素支持onclick } if ( ...
- 学习NodeJS第一天:node.js引言
Node.JS 是资深 C 程序猿 Ryan Dahl(http://four.livejournal.com/)的作品,根据 Google 著名的开源 JavaScript 引擎 V8 来进行二次开 ...
- 学习NodeJS第一天:node.js介绍
Node.JS 前辈 C 程序猿 Ryan Dahl(http://four.livejournal.com/)工程,根据 Google 著名的开源 JavaScript 发动机 V8 对于二次开发 ...
- Javascript学习7 - 脚本化浏览器窗口
原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...
随机推荐
- html中如何添加提示信息
提示:在标签中添加title属性 1.文本中如何添加提示信息? 1.1直接在标签中加title="值": 例如:<p title="爱笑,爱哭,爱生活"& ...
- JS核心系列:理解 new 的运行机制
和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- sublime常用快捷键
自己觉得比较实用的sublime快捷键: Ctrl + / ---------------------注释 Ctrl + 滚动 --------------字体变大/缩小 Ctrl + N----- ...
- Android Button的基本使用
title: Android Button的基本使用 tags: Button,按钮 --- Button介绍: Button(按钮)继承自TextView,在Android开发中,Button是常用 ...
- iOS开发之Alamofire源码深度解析
今天博客中的Alamofire源码的版本是以现在最新的3.4版本为例.上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看<详解NSURLSession>,为了就是 ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- Javascript实现HashTable类
散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...
- 解决VS2008在win7找不到输入序列号的地方
1.VS2008在Windows7 打开维护界面看不到可以输序列号的地方. 因为微软把他隐藏了. 2.我们可以借用工具把他显示出来 下载地址:http://www.zlsoft.com/techbbs ...
- jquery中的$(document).ready(function() {});
当文档载入时执行function函数里的代码, 这部分代码主要声明,页面加载后 "监听事件" 的方法.例如: $(document).ready( $("a") ...