希望有人可以帮助解释为什么这是不正确的。
根据我的理解,fs.read读入缓冲区,而readFile返回缓冲区。我假设有一些等效性,不知道在哪里或为什么。
最终结果是我希望模仿fs.read操作,但是已经预先加载了缓冲区。
const fs = require('fs')
const file = 'file.bin'
const crypto = require('crypto')
const assert = require('assert')
let start = 10
let length = 20
let data = fs.readFileSync(file)
let md5sum = crypto.createHash('md5')
md5sum.update(data.slice(start, length))
let fd = fs.openSync(file, 'r')
let data2 = new Buffer(length)
let md5sum2 = crypto.createHash('md5')
fs.readSync(fd, data2, 0, length, start)
md5sum2.update(data2)
assert.equal(md5sum.digest('hex'), md5sum2.digest('hex'))
答案 0 :(得分:0)
好像我发现了错误:
md5sum.update(data.slice(start, length))
应该是:
md5sum.update(data.slice(start, start + length))
看起来end应该是结束元素而不是长度。