追加 ArrayBuffer

2024-02-12

附加/组合 ArrayBuffer 的最佳方式是什么?

我正在接收和解析具有各种数据结构的网络数据包。传入的消息被读入 ArrayBuffer。如果部分数据包到达,我需要存储它并等待下一条消息,然后重新尝试解析它。

目前我正在做这样的事情:

function appendBuffer( buffer1, buffer2 ) {
  var tmp = new Uint8Array( buffer1.byteLength + buffer2.byteLength );
  tmp.set( new Uint8Array( buffer1 ), 0 );
  tmp.set( new Uint8Array( buffer2 ), buffer1.byteLength );
  return tmp.buffer;
}

显然,由于 ArrayBuffer 的长度是固定的,因此您无法避免创建新的缓冲区,但是是否有必要初始化类型化数组?到达后,我只想能够将缓冲区视为缓冲区;类型和结构无关紧要。


为什么不使用 Blob ? (我意识到当时可能不可用)。

只需使用您的数据创建一个 Blob,例如var blob = new Blob([array1,array2,string,...])并使用 FileReader 将其转回 ArrayBuffer(如果需要)(请参阅this https://stackoverflow.com/questions/15341912/javascript-how-to-go-from-blob-to-arraybuffer).

检查一下:BlobBuilder 和新的 Blob 构造函数有什么区别? https://stackoverflow.com/questions/10412299/whats-the-difference-between-blobbuilder-and-the-new-blob-constructor和这个 :MDN 斑点 API https://developer.mozilla.org/en-US/docs/Web/API/Blob

EDIT :

我想比较这两种方法(Blob 和问题中使用的方法)的效率并创建了一个 JSPerf :http://jsperf.com/appending-arraybuffers http://jsperf.com/appending-arraybuffers

看起来使用Blobs比较慢(事实上,我猜是使用Filereader读取Blob最耗时)。所以现在你知道了;) 当有超过 2 个 ArrayBuffer 时(比如从文件的块中重建文件),也许它会更有效率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

追加 ArrayBuffer 的相关文章

随机推荐

  • VS2008:自动生成的文件和 XML 文档

    这与其说是一个问题 不如说是一个烦恼 我的项目包含许多自动生成的文件 使用 mgmtclassgen exe 当我生成 XML 文档时 我的精美注释库受到来自这些 autogen 文件的 xml 文档警告的困扰 有没有办法a 抑制为这些文件
  • CakePHP SQLSTATE[HY000][14]错误

    我正在尝试将当前的 CakePHP 2 x 应用程序升级到 3 x 我修复了命名空间和文件夹结构问题 现在我遇到了数据库问题 在我的测试服务器中 我创建了相同的 MySQL 数据库并授予用户访问权限 然后我就改变了config app ph
  • Python:列表中 Nan 的相等性?

    我只是想弄清楚这些结果背后的逻辑 gt gt gt nan float nan gt gt gt nan nan False I understand that this is because the eq method is define
  • iOS - 如何访问设备的文件库?

    我正在尝试构建一个可以打开设备上存储的任何 pdf 的应用程序 但我真的不知道如何获取这些文件的句柄 我搜索了文档 发现的每个类都假设我已经拥有该文件的句柄 我在这里一定缺少一些东西 有多种应用程序可以访问音频和图片文件 肯定有办法访问 p
  • 如何使用VBA从Excel工作表中的图片获取EXIF信息

    如何使用 VBA 从 Excel 工作表中的形状图片获取 EXIF 信息 如纬度 经度等 是否可以在不从工作表或压缩的 Excel 工作簿中提取或复制图片的情况下获得它 我可以使用以下代码迭代压缩文件夹内容 Public Sub ReadZ
  • 如何在 Blazor Server 中动态添加、删除输入文本框并获取值?

    我有 Blazor 服务器应用程序 如何在单击按钮时动态添加新的输入文本框并将其删除 并在单击提交按钮时获取所有输入文本框的值 以便将它们保存在数据库中 for int i count i gt 1 i div class row div
  • 在 Spring Boot 中使用@Profile

    我有 Spring Boot 应用程序 1 1 5 发布 并通过配置属性启用我的配置文件spring profiles active MyProfile 配置文件被正确激活 我可以通过正在创建的配置文件中的 bean 看到这一点 然后我有一
  • 从键盘获取输入,无需等待输入

    fgets 和 getch 等函数将等待用户输入 然后再继续 我想要的是这个功能 如果用户按 x 变量将开始递减 c 将使变量开始递增 问题是当我尝试获取输入时程序停止 我希望变量在等待用户输入时继续递增或递减并且不 冻结 我正在使用 Vi
  • 将密码重置添加到 Django Admin 会转到错误的 URL?

    我正在关注以下部分添加密码重置功能 https docs djangoproject com en 2 1 ref contrib admin adding a password reset feature到 Django Admin 它会
  • 为什么不从 WinRT 应用程序(在 StreamSocket 上)连接到 win32 应用程序(在 QTcpSocket 上)

    我正在开发一个带有 Metro 应用程序和 win32 桌面的 Windows 8 1 聊天客户端应用程序 问题是未在 Tcp 套接字上从 winrt 应用程序连接到 win32 应用程序 异常连接失败 错误未从其他计算机回复 有什么问题
  • SwiftUI [演示] / 尝试在已经演示的...上演示视图

    我正在开发一个 SwiftUI 应用程序 首先出现警告 然后出现错误 可能是因为我忽略了这些警告 我想展示我收到的警告 希望有人能指出我可能做错的事情 这是相关代码 struct CustomListView View var localL
  • 如何在 Swagger 中将 https:///swagger 更改为自定义

    我的任务是将 Swagger 安装到 Web API 项目中 已安装 来自 nuget 的最新版本的 Swashbuckle Swashbuckle Core Net45 和 Swashbuckle Net45 自定义 App Start
  • 将 .plist 文件解析为纯 XML C#

    我正在尝试使用 c 读取我的 Apple Safari 历史记录 该历史记录存储在 plist 文件中 但是我总是收到错误 并且我不确定正确的方法是什么 我尝试执行的代码是这样的 XmlDocument xmd new XmlDocumen
  • 如何使用 INotifyPropertyChanged 更新列表框项目

    我有一个列表框 它与对象集合进行数据绑定 我想修改项目的显示方式 以向用户显示这些对象之一是我的程序中的 START 对象 我尝试按照以下方式执行此操作 但列表框不会自动更新 使控制无效也不起作用 我能找到的唯一方法是完全删除数据绑定并再次
  • PHP:仅使用模数和指数进行 RSA 加密

    现在 我只有模数和指数 我应该如何在 PHP 中使用模数和指数进行加密 我花了很多时间在网上寻找答案 但毫无用处 谢谢你的时间 使用 phpseclib 一个纯粹的PHP RSA 实现 http phpseclib sourceforge
  • 在 Microsoft Bot Framework v4 中处理自适应卡 - Nodejs

    return new Promise resolve reject gt x context sendActivity text hi attachments CardFactory adaptiveCard menuJson 我正在尝试发
  • 使用 Xcode 12 访问 SwiftUI 中的 ViewModel 字段:“访问安装在视图之外的状态值”

    我认为这个错误消息对于 Xcode 12 中的 SwiftUI 来说是新的 因为它在 Google 中的点击率为 0 而消息本身相当通用 访问安装在视图之外的状态值 这将导致 Binding 的初始值恒定并且不会更新 我有以下代码 删除了一
  • HTML5 服务器发送的事件:如何设置 withCredentials 选项?

    根据WHATWG 服务器发送的事件 http www whatwg org specs web apps current work multipage comms html eventsource下面是使用的API事件源界面 Constru
  • 将数据表导出到 Excel asp

    我有一个将数据导出到 Excel 文件的网页 我遇到的唯一问题是 当我尝试打开 Excel 文件时 我收到一条消息 您尝试打开的文件的格式与文件扩展名指定的格式不同 请验证该文件未损坏并且来自打开文件之前的可信来源 我怎样才能摆脱这个消息
  • 追加 ArrayBuffer

    附加 组合 ArrayBuffer 的最佳方式是什么 我正在接收和解析具有各种数据结构的网络数据包 传入的消息被读入 ArrayBuffer 如果部分数据包到达 我需要存储它并等待下一条消息 然后重新尝试解析它 目前我正在做这样的事情 fu