[英]How do I write an array of integers as a bytestream to the client in Nodejs?
如何在Node.js中將整數數組作為字節流寫入客戶端?
假設我有數組[17, 256, 82]
。
我使用內容類型application/octet-stream
。
現在,我想返回一個包含二進制流0x00 0x11 0x01 0x00 0x00 0x52
的響應,即每個整數在流中使用兩個字節表示。
如何在Node.js中做到這一點? 我一直在看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
不是要處理二進制文件嗎?
您需要添加'binary'
編碼。 默認情況下,編碼為'utf8'
,當對“二進制”字符串進行編碼時,可能會添加其他字節。
numbers = numbers.map(function(n) {
return utils.intTo16BigEndianString(n);
});
resp.write(numbers.reduce(function (acc, curr) {
return acc + curr;
}), 'binary');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.