js add Struct to ArrayBuffer
使用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的更多相关文章
- jquery add() 和js add()
HTML DOM add() 方法 HTML DOM Select 对象 定义和用法 add() 方法用于向 <select> 添加一个 <option> 元素. 语法 sel ...
- [转]js add month 加n月
本文转自:http://stackoverflow.com/questions/5645058/how-to-add-months-to-a-date-in-javascript/5645126 I ...
- JS add script tag to dynamically call script
//IE: var script = document.createElement("script"); script.setAttribute("type", ...
- [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 ...
- leetcode—js—Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- js add media query
var msViewportStyle = document.createElement("style"); msViewportStyle.appendChild( docume ...
- js,add script async? loaded ok.
function loadScript(url, callback){ var script = document.createElement_x("script") script ...
- 简洁JS 日历控件 支持日期和月份选择
原文出处 以下这个JS日历控件是我的闲暇之余自己编写的,所有的代码全部在IE7/IE8/Firefox下面测试通过, 而且可以解决被iframe层遮盖的问题.现在只提供两种风格(简洁版和古典版)和两种 ...
- [转] 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 ...
随机推荐
- python基础(数据类型,while,if)
python基础初识. 1,运行python代码. 在d盘下创建一个t1.py文件内容是: print('hello world') 打开windows命令行输入cmd,确定后 写入代码python ...
- SpringMVC听课笔记(一:SpringMVC概述)
地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...
- 用友GRP-u8 SQL注入
POST /Proxy HTTP/1.1 Accept: Accept: */* Content-Type: application/x-www-form-urlencoded User-Agent: ...
- OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)
OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04) 单纯简单的 OpenCV 安装配置方法,在这个地 ...
- docker(12)使用Dockerfile创建jenkins+python3+pytest环境
前言 之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以 ...
- rockchip的yocto编译环境搭建
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述 嵌入式的朋友们,应该知道Linux驱动开发过程中,需要进行搭建交叉编译工具链环境.移植u-boot ...
- EF6.2加载速度慢的解决方案
最近的项目中一直有反馈,EF在第一次启动之后调用的话,加载速度很慢,在网上搜索了一下,基本就是三种解决方案. 在程序启动的时候将映射视图缓存下来. 使用Ngen生成EF的本地镜像. IIS8内置功能 ...
- 【noi 2.6_2988】计算字符串距离(DP)
题意: 给两个字符串,可以增.删.改,问使这两个串变为相同的最小操作数. 解法:(下面2种的代码主要区别在初始化和,而状态转移方程大家可挑自己更容易理解的方法打) 1.f[i][j]表示a串前i个和b ...
- 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 ...
- Linux命令之find命令中的-mtime参数
有关find -mtime的参数解释 mtime参数的理解应该如下: -mtime n 按照文件的更改时间来找文件,n为整数. n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n ...