Получить Uint16 из читаемого потока - PullRequest
0 голосов
/ 01 февраля 2019

В следующем примере я извлекаю 2 необработанных байта.

fetch('https://www.random.org/cgi-bin/randbyte?nbytes=2')
    .then(response=>response.body.getReader())
    .then(reader=>0/*Here convert to Uint16*/)

Есть идеи, как преобразовать результирующий читаемый поток в целое число Uint16 из 2 байтов?

1 Ответ

0 голосов
/ 01 февраля 2019

Если вы уверены, что вы получите все необходимые байты в первом блоке, то вы можете попробовать это:

fetch('https://www.random.org/cgi-bin/randbyte?nbytes=2')
    .then(response=>response.body.getReader())
    .then(reader => reader.read())
    .then(result => console.log(new DataView(result.value.buffer).getUint16()));

См. ReadableStreamDefaultReader.read(), Uint8Array и DataView.

Или более простой способ:

fetch('https://www.random.org/cgi-bin/randbyte?nbytes=2')
    .then(response => response.arrayBuffer())
    .then(buffer => console.log(new DataView(buffer).getUint16()));
...