2017-10-13 32 views
0

如何在Nodejs中将整数数组作为字节流写入客户端?如何在Nodejs中将整数数组作为字节流写入客户端?

假设我有数组[17, 256, 82]

我使用内容类型application/octet-stream

现在,我想返回一个包含二进制流0x00 0x11 0x01 0x00 0x00 0x52的响应,即每个整数都使用流中的两个字节表示。

如何在Nodejs中执行此操作?我一直在寻找fs,但找不到方法。

尝试:

function intTo16BigEndianString(n) { 
    var result = String.fromCharCode((n >> 8) & 0xFF); 
    result += String.fromCharCode((n >> 0) & 0xFF); 

    return result; 
} 

... 

numbers = [23,256,19]; 

numbers = numbers.map(function(n) { 
    return intTo16BigEndianString(n); 
}) 
resp.write(numbers.reduce(function (acc, curr) { 
    return acc + curr; 
})); 

但是,结果是不普通的二进制输出。奇怪的字节混合在一起。我猜这是因为,resp是不是要处理二进制?

+0

你试过了什么?你卡在哪里? – Cruiser

+0

我已将字节整数转换为双字节字符串。现在我需要把它们写出来。 – Shuzheng

+0

你需要发布一些代码,以便我们可以帮助 – Cruiser

回答

1

您需要添加'binary' enconding。默认情况下,编码为'utf8',这可能会在编码“二进制”字符串时增加额外的字节。

numbers = numbers.map(function(n) { 
    return utils.intTo16BigEndianString(n); 
}); 

resp.write(numbers.reduce(function (acc, curr) { 
    return acc + curr; 
}), 'binary'); 
相关问题