簡體   English   中英

如何在Node.js中將整數數組作為字節流寫入客戶端?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM