首页 > 其他分享 >js 字符串与ArrayBuffer互转

js 字符串与ArrayBuffer互转

时间:2022-12-06 20:11:23浏览次数:76  
标签:字节 符号 32 ArrayBuffer 整数 js 互转 长度

1.情景展示

在js当中,如何将字符串转成ArrayBuffer?

如何将ArrayBuffer转成字符串?

2.字符串转ArrayBuffer

/**
 *将类型化数组转字符串
 Int8Array:8位有符号整数,长度1个字节。
 Uint8Array:8位无符号整数,长度1个字节。
 Int16Array:16位有符号整数,长度2个字节。
 Uint16Array:16位无符号整数,长度2个字节。
 Int32Array:32位有符号整数,长度4个字节。
 Uint32Array:32位无符号整数,长度4个字节。
 Float32Array:32位浮点数,长度4个字节。
 Float64Array:64位浮点数,长度8个字节。
 *我们可以根据自己的实际情况选用对应的数组
 */
function ab2str(arrayBuffer) {
    return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));
}

 

3.ArrayBuffer转字符串

/**
 * 将字符串转类型化数组
 */
function str2ab(str) {
    var buf = new ArrayBuffer(str.length * 2); // 每个字符占用2个字节
    var bufView = new Uint8Array(buf);// Uint8Array可换成其它
    for (var i=0, strLen=str.length; i<strLen; i++) {
         bufView[i] = str.charCodeAt(i);
    }
    return buf;
}

4.拓展

ArrayBuffer 类型化数组,类型化数组是JavaScript操作二进制数据的一个接口;

最初为了满足JavaScript与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式的背景下诞生的;

类型化数组是建立在ArrayBuffer对象的基础上的。它的作用是,分配一段可以存放数据的连续内存区域;

ArrayBuffer对象有一个slice方法,允许将内存区域的一部分,拷贝生成一个新的ArrayBuffer对象;

除了slice方法,ArrayBuffer对象不提供任何直接读写内存的方法,只允许在其上方建立视图,然后通过视图读写。

ArrayBuffer作为内存区域,可以存放多种类型的数据。不同数据有不同的存储方式,这就叫做“视图”。目前,JavaScript提供以下类型的视图:

Int8Array:8位有符号整数,长度1个字节。  表示使用 8 bits 表示一个有符号整型 (-128 ~ 127)
Uint8Array:8位无符号整数,长度1个字节。  把 ArrayBuffer 的每个 byte(8-bit) 当作一个单独的无符号整型数字 (0 - 255)
Int16Array:16位有符号整数,长度2个字节。
Uint16Array:16位无符号整数,长度2个字节。
Int32Array:32位有符号整数,长度4个字节。
Uint32Array:32位无符号整数,长度4个字节。
Float32Array:32位浮点数,长度4个字节。  表示使用 32 bits 表示一个浮点数
Float64Array:64位浮点数,长度8个字节。

Unit7ClampedArray:在 0 ~ 255 范围内和 Unit8Array 是一样的,对超出范围的处理有所不同,和图像处理相关(一般像素范围也是 0 ~ 255)

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:字节,符号,32,ArrayBuffer,整数,js,互转,长度
From: https://www.cnblogs.com/Marydon20170307/p/16960378.html

相关文章

  • js base64与字符串互相转换
    1.情景展示在js当中,如何把base64字符串解码成字符串?如何把字符串进行base64编码?2.base64编码将字符串转base64格式window.btoa(str)  3.base64解码将base64格......
  • js2
    今日内容概要BOM操作DOM操作jQuery类库今日内容详细BOM操作BOM(BrowserObjectModel)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”window.o......
  • JS—节流与防抖
     一、js防抖和节流在进行窗口的resize、scroll、输出框内容校验等操纵的时候,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常之差。那么为了前端......
  • JS的BOM与DOM操作
    BOM与DOMBOM(BrowserObjectModel)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”。DOM(DocumentObjectModel)是指文档对象模型,通过它,可以访问HTML文档......
  • js 正则表达式
    1、字符串中是否有空格varreg=/\s/;varcontent='xx'reg.test(content)返回true2、字符串开头是否有空格varreg=/^\s/;3、字符串结尾是否有空格varreg......
  • jsonSchema进行日志格式校验
    jsonSchema官网功能1、属性校验2、属性类型校验3、属性值校验fromjsonschemaimportvalidate,draft7_format_checkerfromjsonschema.exceptionsimportSchemaE......
  • js 加减乘除方法封装(处理精度问题)
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><scriptsrc="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script></head><......
  • JS之BOM/DOM和jquery类库简介
    目录BOM操作DOM操作查找标签操作节点获取值操作class与css操作事件事件实战案例jQuery类库标签对象与jQuery对象BOM操作JavaScript分为ECMAScript,DOM,BOMBOM(BrowserObj......
  • 2022-12-06 js 如何正确富文本中的字号
    编辑内容,提交,后端以富文本形式返回,内容假设为 "<p><b><fontsize="7">标题</font></b></p>"我们可以看到里面有一个size="7",对应着富文本里面的字号48px。由此得知,你......
  • 今日JS解密日记
    干货从来不废话,直接上源代码,源码很大,单拎一个函数出来function_0x486eb9(_0xfeca11,_0x4a4275){if(!_0xfeca11)return!![];if(!_0xfeca11['\x63\x6c\x69\x65......