NodeJS将64位无符号整数写入缓冲区

2024-02-04

我想以大端格式将 64 位(8 字节)大整数存储到 nodejs 缓冲区对象中。

此任务的问题是,nodejs 缓冲区仅支持写入 32 位整数作为最大值(使用 buf.write32UInt32BE(value, offset))。所以我想,为什么我们不能直接分割 64 位整数呢?

var buf = new Buffer(8);

buf.fill(0) // clear all bytes of the buffer
console.log(buf); // outputs <Buffer 00 00 00 00 00 00 00 00>

var int = 0xffff; // as dezimal: 65535

buf.write32UInt32BE(0xff, 4); // right the first part of the int
console.log(buf); // outputs <Buffer 00 00 00 00 00 00 00 ff>

buf.write32UInt32BE(0xff, 0); // right the second part of the int
console.log(buf); // outputs <Buffer 00 00 00 ff 00 00 00 ff>

var bufInt = buf.read32UInt32BE(0) * buf.read32UInt32BE(4);
console.log(bufInt); // outputs 65025

正如你所看到的,这几乎有效。问题只是分割 64 位整数并在读取时找到丢失的 510。有人介意展示这两个问题的解决方案吗?


我认为您正在寻找的是:

var bufInt = (buf.readUInt32BE(0) << 8) + buf.readUInt32BE(4);

将第一个数字移动 8 位并相加(而不是相乘),然后返回65535


EDIT

另一种写法是:

var buf = new Buffer(8);
buf.fill(0);

var i = 0xCDEF; // 52719 in decimal

buf.writeUInt32BE(i >> 8, 0); //write the high order bits (shifted over)
buf.writeUInt32BE(i & 0x00ff, 4); //write the low order bits

console.log(buf); //displays: <Buffer 00 00 00 cd 00 00 00 ef>

var bufInt = (buf.readUInt32BE(0) << 8) + buf.readUInt32BE(4);
console.log(bufInt); //displays: 52719
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS将64位无符号整数写入缓冲区 的相关文章

随机推荐

  • 计算网络两个输出之间的 cosine_proximity 损失

    我正在使用 Keras 2 0 2 功能 API Tensorflow 1 0 1 来实现一个接受多个输入并产生两个输出的网络a and b 我需要使用 cosine proximity 损失来训练网络 这样b是标签a 我该怎么做呢 在这里
  • 在 makefile 中指定路径(Windows 上的 GNU make)

    我正在使用 GNU make 来构建一个使用 Microsoft Visual C 的项目 并且我希望能够从任何 CMD 窗口运行它 而不必打开预配置路径 以及各种其他环境变量 的预配置窗口通过批处理文件 理想情况下 我想在 makefil
  • 无法让 pyspark 作业在 hadoop 集群的所有节点上运行

    Summary 我无法运行我的 python spark 作业all我的 hadoop 集群的节点 我已经安装了 hadoop spark 1 5 2 bin hadoop2 6 的 Spark 启动 java Spark 作业时 负载得到
  • 如何检查 Asp.net Core MVC(又名 Asp.Net 5 RC1)中的响应 cookie?

    我正在将 Web 表单应用程序转换为 asp net core mvc 在我的 Web 表单应用程序中 有时在我设置一些响应 cookie 后 其他代码需要查看它们是否已设置 如果是 则访问 cookie 的属性 即值 过期 安全 http
  • 在 Powershell 中删除重复的 XML 节点组

    我有一个 XML 文件 由于重新运行脚本和文件夹结构 该文件可能包含重复的包元素 请参阅示例 XML 中的最后两个包 现在我需要一个 Powershell 函数来删除所有重复的包 在这种情况下 重复项是由制造商 名称 版本 文件名和执行版本
  • 如何从 CPAN 安装“Thread::Pool”?

    我在用着cpanm安装 Perl 模块 但我无法安装Thread Pool因为某些原因 sudo cpanm Thread Pool 失败并且日志文件显示 cpanm App cpanminus 1 0012 on perl 5 01000
  • Bottle.py 错误路由

    Bottle py 附带了一个导入来处理抛出 HTTPError 并路由到函数 首先 文档声称我可以 几个例子也是如此 from bottle import error error 500 def custom500 error retur
  • 您能识别出这个带有复选框的多选下拉列表吗?

    I m looking for this control which is definitely not stock It s on a website that I won t link so people don t think I m
  • 如何使用 parse.com 服务器 iOS 保存对象数组?

    我正在使用 parse com 服务器发送和检索我的 iOS 应用程序数据 我想保存歌曲列表 每首歌曲都有以下属性 标题 艺术家 专辑 我的代码片段在这里 IBAction saveSongsData id sender PFObject
  • 如何从 RAM 中完全解析压缩文件?

    背景 我需要解析一些各种类型的 zip 文件 出于某种目的获取一些内部文件内容 包括获取它们的名称 有些文件无法通过文件路径访问 因为 Android 有 Uri 来访问它们 并且有时 zip 文件位于另一个 zip 文件内 随着使用 SA
  • 我怎样才能让阴谋集团安装酸性状态?

    我是 Haskell 的新手 想尝试酸性状态库 但在尝试安装它时得到以下输出 gt cabal install acid state Resolving dependencies Configuring acid state 0 7 5 B
  • SSIS - 创建日期时间的脚本问题

    我正在使用 SSIS 将数据从 CSV 文件上传到数据库中的表 我尝试获取 2 个字符串 一个用于日期 另一个用于时间 并将它们连接起来 如下所示 string datsDateTime String Concat Row DATE Row
  • 使用 CSS 制作窄字符

    如何使用 CSS 减少类似 Arial 字体的字符宽度 您无法减少字符宽度 但可以减少字母间距 span letter spacing 0px
  • 与图片框一起移动按钮 vb/c#

    我正在开发映射的 DVR cctv UI 我自己做的 所以没有使用google的API 我只是在需要的地方切掉了地图的大部分 所以 如果我确实有一个非常大的地图 那么它不适合我的电脑分辨率 我还没有找到在图片框中移动图片的代码 但我所做的是
  • 如何更新特定的 XElement?

    更新 XElement 的最佳方法是什么 更新元素 Pen 的 itemNumber 的值 在此 XML 中
  • 使用gradle中的参数运行jar

    我想在我的 gradle 脚本中运行一个参数位于 C Users nwuser FitNesse fitnesse standalone jar 的 jar 文件 我知道如何在没有参数的情况下做到这一点 apply plugin java
  • SwiftUI - 按钮 - 如何将函数(带参数)请求从子级传递给父级

    我已经知道如何从子函数调用父函数 但是如果我的父函数有参数我应该做什么 我想不通 不带参数的工作代码 struct ChildView View var function gt Void var body some View Button
  • React Native,从其他文件传递变量

    我是本机反应新手 并且在将变量从一个文件传递到另一个文件时遇到问题 module exports 在传递类时效果很好 但是 本机有没有办法通过导出将变量从一个文件传递到另一个文件 在下面的示例中 一个文件 按钮 正在创建一个随机数数组 我想
  • 使用 Cocoa 中的 xsd 文件验证 XML 架构?

    我在本地 xsd 文件中有一些 XML 和 XML 架构 XML 文档不包含任何架构信息 我想根据 Cocoa 中的 xsd 模式文件验证 XML 文档 这意味着我更喜欢基于 NS CF libxml 的东西 而不是外部库 我可以跨越xml
  • NodeJS将64位无符号整数写入缓冲区

    我想以大端格式将 64 位 8 字节 大整数存储到 nodejs 缓冲区对象中 此任务的问题是 nodejs 缓冲区仅支持写入 32 位整数作为最大值 使用 buf write32UInt32BE value offset 所以我想 为什么