Получить Uint16 из читаемого потока

В следующем примере я извлекаю 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 ответ

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

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()));
Другие вопросы по тегам