2017-10-13 1 views
0

byjestream으로 정수 배열을 Nodejs의 클라이언트에 쓰려면 어떻게해야합니까?byjestream으로 정수 배열을 Nodejs의 클라이언트에 쓰려면 어떻게해야합니까?

배열이 [17, 256, 82] 인 것으로 가정합니다.

콘텐츠 유형은 application/octet-stream입니다.

이제 이진 스트림 0x00 0x11 0x01 0x00 0x00 0x52을 포함하는 응답을 반환하고 싶습니다. 즉, 각 정수는 스트림에서 2 바이트를 사용하여 표시됩니다.

노드에서 어떻게 할 수 있습니까? 나는 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

바이트 정수를 2 바이트 문자열로 변환했습니다. 이제 나는 그것들을 써야합니다. – 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'); 
관련 문제