在Node.JS中的memset和sprintf等价物

时间:2014-06-20 16:40:14

标签: javascript c node.js

我正在尝试将此代码移植到node.JS

void init(int a, int b, int internalRounds)
{
    memset(nkey, 0x00, 256);
    sprintf((char*)nkey, "%.5d_XXXXX%.5d_MASIN_%.5d", (a+10), (b+10), (a+b));
    setup(nkey, 256);
    ucPrev = getRandom();
}

我想知道如何正确地做到这一点。

我目前有:

var Crypt = function(a, b, internalRounds) {
  var nkey = new Buffer(256)
  nkey.fill(0x00)

  nkey = util.format('%.5d_XXXXX%.5d_MASIN_%.5d', (a+10), (b+10), (a+b))

  this.setup(nkey, 256)
  this.ucPrev = this.getRandom()
}

我想了解我是否正确地做到了

1 个答案:

答案 0 :(得分:1)

util.format不支持精度(即%.5f)。此外,分配给nkey只是用util.format返回的字符串替换缓冲区。您希望将write字符串改为缓冲区。

以下是解决这些问题的方法:

var key = new Buffer(256);
key.fill(0);
key.write(
  (a + 10).toFixed(5) +
  '_XXXXX' +
  (b + 10).toFixed(5) +
  '_MASIN_' +
  (a + b).toFixed(5)
);