我在Node.js中有以下代码:
var str = '',
ch;
for(/*standard for loop*/){
// some code ...
ch = '%' + buffer[i].toString(16);
str += ch;
}
现在当buffer[i].toString(16)
返回时,我们说d6
,结果字符串不包含%d6
,而是NaN6
。
现在我知道%d用于C的sprinf,但afaik JavaScript和Node都有sprintf或等效函数。
我的字符串中需要%d6
,那么我该怎么办才能阻止JS自动将%d
(和其他人,如%f
)转换为NaN?
答案 0 :(得分:0)
你不能为你自己的purproses使用toString方法,因为JS已经拥有了这个名字的自己的函数。
输出是什么:
ch = '%' + buffer[i].toString(16);
alert(ch);
alert(buffer[i]);
alert(buffer[i].toString(16));
答案 1 :(得分:0)
如果我们进行快速测试,则错误不在您粘贴的代码中:
function test()
{
var stuff = 214;
var str = '', ch;
ch = '%' + stuff.toString(16);
alert(ch);
}
我们看到我们想要返回的内容实际上是返回的(%d6)。
NaN代表的不是数字,你确定缓冲区数组中的数字是多少?你在ch上调用任何其他方法/函数吗?
答案 2 :(得分:0)
Node的console.log() - 用于输出的标准函数 - 我用来打印出结果的行为就像printf一样,实际记录了(http://nodejs.org/docs/v0.4.11/api/stdio.html#console.log)。愚蠢的我,感谢所有人让我找到解决方案。
sys.puts()打印预期的字符串。