从文件中获取4个字节并将其转换为时间戳

时间:2017-04-13 10:20:02

标签: javascript node.js buffer

我在将文件中的数据作为缓冲区然后将其转换为长示例代码时遇到问题

var fs = require('fs');

fs.open('24.mkt', 'r', function(status, fd) {
  if (status) {
    console.log(status.message);
    return;
  }
  var buffer = new Buffer(4);
  fs.read(fd, buffer, 0, 4, 0, function(err, num) {
    console.log(buffer.values());
  });
});

文件链接 - > https://archive.org/download/kamo_24/24.mkt

前4个字节包含4个字节的长整数时间戳

2 个答案:

答案 0 :(得分:1)

您可以使用node.js的Buffer.readInt32BE功能。它从给定的顺序(Big或Little endian)读取4个字节到变量,从offset参数开始:

// Unix timestamp now: 1492079016
var buffer = Buffer.from([0x58, 0xEF, 0x51, 0xA8]);
var timestamp = buffer.readInt32BE(0);

process.stdout.write(timestamp.toString());

答案 1 :(得分:0)

您可能希望使用readUInt32BE and/or readUInt32LEbuffer)将缓冲区值转换为数字。

你也可以尝试使用node-bigintnode-bignum将缓冲区中的值转换为数值(对于4字节的情况,它可能有点过分但是如果你需要处理更大的数字,它可能会适合需要),都允许以类似的形式从缓冲区创建(只要知道选项差异):

bignum.fromBuffer(buf, opts)
// or
bigint.fromBuffer(buf, opts)