我得到一个数组,作为远程命令执行的响应(使用ssh2)。如何将其转换为字符串?
[97,112,112,46,106,115,10,110,111,100,101,46,106,115,10]
答案 0 :(得分:7)
var result = String.fromCharCode.apply(null, arrayOfValues);
<强>说明:强>
String.fromCharCode可以将char代码列表作为参数,每个char代码作为单独的参数(例如:String.fromCharCode(97,98,99)
)。
apply
允许使用自定义this
调用函数,并将参数作为数组提供(与call
相反,它按原样获取参数)。因此,由于我们不关心this
是什么,我们将其设置为null
(但任何事情都可行)。
总之,String.fromCharCode.apply(null, [97,98,99])
相当于String.fromCharCode(97,98,99)
并返回'abc'
,这正是我们所期望的。
答案 1 :(得分:3)
这取决于你想要什么和你的意思。
选项一:如果要将文本转换为ASCII,请执行以下操作:
var theArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
theString = String.fromCharCode.apply(0, theArray);
(根据有用的评论编辑。)
产地:
app.js
node.js
选项二:如果您只想要以逗号分隔的列表,则可以执行.join(',')
:
var theArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
var theString = theArray.join(',');
你可以把你想要的任何东西作为分隔符放在.join()
中,就像一个逗号和一个空格,连字符,甚至是单词。
答案 2 :(得分:2)
在node.js中,通常使用缓冲区:
> new Buffer([97,112,112,46,106,115,10,110,111,100,101,46,106,115,10]).toString()
'app.js\nnode.js\n'
它会比fromCharCode更快,而且最重要的是,它会正确保存utf-8序列。
答案 3 :(得分:1)
只需使用toString()函数:
var yourArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
var strng = yourArray.toString();
答案 4 :(得分:0)
ssh2 module将Buffer(不是实际的javascript数组)传递给来自exec()或shell()的流的'data'事件处理程序。除非您在流上调用了setEncoding(),在这种情况下,您将获得一个包含您指定的编码的字符串。
如果您想要字符串表示而不是原始二进制数据,那么请调用chunk.toString()
。