我想将两个预先计算好的crc32合并为一个新的:
nodejs中的示例代码:
// i'm using crc32 lib: https://github.com/brianloveswords/buffer-crc32/blob/master/index.js
var crc32 = require('buffer-crc32');
var foo = new Buffer('foo');
var bar = new Buffer('bar');
var fooCrc32 = crc32(foo); // <Buffer 8c 73 65 21>
var barCrc32 = crc32(bar); // <Buffer 76 ff 8c aa>
// how to combine crc32 of foo and crc32 of bar to get crc32 of 'foobar'
var foobarCrc32 = some_function(fooCrc32, barCrc32); // <Buffer 9e f6 1f 95>
如何在nodejs中进行此操作? 我知道这是可能的,因为zlib crc32_combine函数:
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1,uLong crc2,z_off_t len2)); 将两个CRC-32校验值合并为一个。对于两个字节序列,seq1和seq2,长度为len1和len2,计算每个crc1和crc2的CRC-32校验值。 crc32_combine()返回seq1和seq2连接的CRC-32校验值,只需要crc1,crc2和len2。
但我不知道如何在nodejs中实现它。 nodejs中是否有任何库可以执行此操作或者某些GIST? 任何人都可以在nodejs中提供该功能吗?
答案 0 :(得分:2)
因为他们无论如何都在使用zlib,你可以让nodejs作者为zlib的crc32_combine()
添加一个接口。
除此之外,您可以从zlib复制源代码并在js中重写它。
请注意,只有两个crc是不够的。你需要两个crc的和第二部分的长度。
答案 1 :(得分:2)
如果其他人需要该功能,我已经为节点制作了模块:
答案 2 :(得分:0)
应该可以在Node中实现操作,这里是zlib中的代码:http://www.raspberryginger.com/jbailey/minix/html/crc32_8c-source.html#l00370
话虽这么说,你最好从节点调用zlib C,而不是重新实现它。