使用struct-buffer为ArrayBuffer添加结构体

$ npm i struct-buffer

1. 创建结构体

import { DWORD, string_t, StructBuffer, uint32_t } from "struct-buffer";

const struct = new StructBuffer("Player",{
hp: DWORD, // 4字节大小
mp: uint32_t, // 4字节大小
name: string_t[3], // 3字节大小
});

2. 解析ArrayBuffer

const buffer = new Uint8Array([
0, 0, 0, 0x0a,
0, 0, 0, 0x64,
0x61, 0x62, 0x63,
]); const data = struct.decode(buffer);
// data => { hp: 10, mp: 100, name: 'abc' };

将Object数据转换为ArrayBuffer

// 注意key要和结构体定义时的一样
const view = struct.encode({
hp: 10,
mp: 100,
name: "abc",
});
// view => <00 00 00 0a 00 00 00 64 61 62 63>

可以注册类型

// registerType(typeName: string | string[], size: 1 | 2 | 4 | 8, unsigned = true): StructType

const short = registerType("short", 2, false);

可以使用typedef继承别的类型

// typedef(typeName: string | string[], type: StructType): StructType

const HANDLE = typedef("HANDLE", DWORD);

See alse:

js add Struct to ArrayBuffer的更多相关文章

  1. jquery add() 和js add()

    HTML DOM add() 方法 HTML DOM Select 对象 定义和用法 add() 方法用于向 <select> 添加一个 <option> 元素. 语法 sel ...

  2. [转]js add month 加n月

    本文转自:http://stackoverflow.com/questions/5645058/how-to-add-months-to-a-date-in-javascript/5645126 I ...

  3. JS add script tag to dynamically call script

    //IE: var script = document.createElement("script"); script.setAttribute("type", ...

  4. [Node.js] Add Logging to a Node.js Application using Winston

    Winston is a popular logging library for NodeJS which allows you to customise the output, as well as ...

  5. leetcode—js—Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  6. js add media query

    var msViewportStyle = document.createElement("style"); msViewportStyle.appendChild( docume ...

  7. js,add script async? loaded ok.

    function loadScript(url, callback){ var script = document.createElement_x("script") script ...

  8. 简洁JS 日历控件 支持日期和月份选择

    原文出处 以下这个JS日历控件是我的闲暇之余自己编写的,所有的代码全部在IE7/IE8/Firefox下面测试通过, 而且可以解决被iframe层遮盖的问题.现在只提供两种风格(简洁版和古典版)和两种 ...

  9. [转] Creating a Simple RESTful Web App with Node.js, Express, and MongoDB

    You can find/fork the sample project on GitHub Hey! This and all my other tutorials will soon be mov ...

随机推荐

  1. python基础(数据类型,while,if)

    python基础初识. 1,运行python代码. 在d盘下创建一个t1.py文件内容是: print('hello world') 打开windows命令行输入cmd,确定后 写入代码python ...

  2. SpringMVC听课笔记(一:SpringMVC概述)

    地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...

  3. 用友GRP-u8 SQL注入

    POST /Proxy HTTP/1.1 Accept: Accept: */* Content-Type: application/x-www-form-urlencoded User-Agent: ...

  4. OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)

    OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04) 单纯简单的 OpenCV 安装配置方法,在这个地 ...

  5. docker(12)使用Dockerfile创建jenkins+python3+pytest环境

    前言 之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以 ...

  6. rockchip的yocto编译环境搭建

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述   嵌入式的朋友们,应该知道Linux驱动开发过程中,需要进行搭建交叉编译工具链环境.移植u-boot ...

  7. EF6.2加载速度慢的解决方案

    最近的项目中一直有反馈,EF在第一次启动之后调用的话,加载速度很慢,在网上搜索了一下,基本就是三种解决方案. 在程序启动的时候将映射视图缓存下来. 使用Ngen生成EF的本地镜像. IIS8内置功能 ...

  8. 【noi 2.6_2988】计算字符串距离(DP)

    题意: 给两个字符串,可以增.删.改,问使这两个串变为相同的最小操作数. 解法:(下面2种的代码主要区别在初始化和,而状态转移方程大家可挑自己更容易理解的方法打) 1.f[i][j]表示a串前i个和b ...

  9. Codeforces Beta Round #19 D. Points

    Description Pete and Bob invented a new interesting game. Bob takes a sheet of paper and locates a C ...

  10. Linux命令之find命令中的-mtime参数

    有关find -mtime的参数解释 mtime参数的理解应该如下: -mtime n 按照文件的更改时间来找文件,n为整数. n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n ...