npm 包 endian-reader 使用教程

阅读时长 4 分钟读完

什么是 endian-reader

endian-reader 是一个可以读取特定字节序的 npm 包。在计算机中,字节序指的是多字节数据在内存中存储的顺序。在不同的计算机体系结构中,字节序的顺序可能是不同的。专业名词为“Endianness”。在一些数据交换场景中这种差异会产生问题。尤其在跨平台开发中,比如一个 Linux 环境下的 C 程序要想读取一个 Windows 环境下的数据时,字节序之间的不同会导致数据错误或解析问题。endian-reader 解决了这种字节序的问题,是专门为 JS、Node.js 开发的。

怎么使用 endian-reader

安装

endian-reader 是一个 npm 包,可以以如下方式安装:

使用

使用 endian-reader 有两个步骤:

  1. 创建 endian-reader 实例;
  2. 读取数据。

创建 endian-reader 实例

只需如下传入一个参数,即字节序类型,即可创建 endian-reader 实例:

具体的字节序类型可传为字符串 "LE" 或 "BE"。其中,"LE" 表示 little-endian;"BE" 表示 big-endian。

读取数据

endian-reader 实例提供了一些方法来读取数据:

  1. readByte(): 读取 1 个字节;
  2. readUInt16(): 读取 2 个字节的无符号整数;
  3. readUInt32(): 读取 4 个字节的无符号整数;
  4. readInt16(): 读取 2 个字节的有符号整数;
  5. readInt32(): 读取 4 个字节的有符号整数。

例如:

-- -------------------- ---- -------
----- ------------ - -------------------------

----- - - --- -------------------

----- --- - -------------
  -----   -- -
  -----   -- --
  -----   -- --
  -----   -- ---
---

-----------------------------     -- --- -
-------------------------------  -- --- --
-------------------------------  -- --- ----------

示范

下面的代码演示了如何将任意数据转化为 little endian 字节序:

-- -------------------- ---- -------
----- ------------ - -------------------------

----- -- - --- -------------------
----- -- - --- -------------------

-- ----
--- --- - -----------   -- ----- ---------

-- --------
----- --- - ----------------------
---------------------- ---  -- --------

-- ---- --- ------------ -------------
--------------------------------   -- ------------

-- ---- --- ---------------------
--------------------------------   -- -------------

从上面的代码可知,我们将一个大端序的整数转变成了一个小端序的整数来读取。这个演示告诉我们,不同字节序并不会影响数据本身,只会影响数据在内存中的存储方式。

总结

在跨平台开发中,字节序间的差异是十分容易遇到的问题,这时候使用 endian-reader 可以很好地解决这一问题。本文介绍了 endian-reader 的安装和使用方法,并以一个代码示例讲解了如何把数据变成 little endian 字节序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e25a563576b7b1ece5b

纠错
反馈