2017-10-13 27 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'); 
相關問題