Читать встроенный файл как Uint8Array в экземпляре WebAssembly - PullRequest
0 голосов
/ 18 января 2020

Я встраиваю двоичный файл в файл wasm WebAssembly.

Рассмотрим этот источник:

embed.ts (создается для embed.wasm с использованием AssemblyScript):

export const text: u8[] = [83,65,77,80,76,69,10]; // The text "SAMPLE" in UTF-8 encoding

export const textLength: i32 = text.length;

работник. js:

const instance = new WebAssembly.Instance(/* read embed.wasm */).exports;
instance.textLength // prints 7, correct
instance.text // prints, 10232 of type number, ?!?!?

Как я могу прочитать этот байтовый массив, чтобы включить восстановление встроенного файла? Мне нужно пересоздать Uint8Array, чтобы в работнике. js Я мог сохранить файл или передать его куда-нибудь.

1 Ответ

1 голос
/ 18 января 2020

WebAssembly на текущем этапе может передавать только числа между модулем wasm и javascript хостом, поэтому instance.text - это просто число (указатель) или смещение в линейной памяти. Для считывания реальных данных из этой памяти вы можете использовать __getUint8Array или __getArray из loader . Также полезная информация

...