Код: Выделить всё
const inputStrPointer = createTeaVMString(input);
const outputStrPointer = teaVM.instance.exports.process(inputStrPointer);
const result = extractString(outputStrPointer);
Код: Выделить всё
function createTeaVMString(input) {
const strPointer = teaVM.allocateString(input.length);
const strDataPtr = teaVM.stringData(strPointer);
const charArrayPtr = teaVM.objectArrayData(strDataPtr);
const memory = new Uint16Array(teaVM.memory.buffer, charArrayPtr, input.length);
for (let i = 0; i < input.length; i++) {
memory[i] = input.charCodeAt(i);
}
return strPointer;
}
function extractString(strPointer) {
//pointer
const stringDataPtr = teaVM.stringData(strPointer);
const length = teaVM.arrayLength(stringDataPtr);
const charArrayPtr = teaVM.charArrayData(stringDataPtr);
const memory = new Uint16Array(teaVM.memory.buffer, charArrayPtr, length);
let result = "";
for (let i = 0; i < length; i++) {
result += String.fromCharCode(memory);
}
return result;
}
< /code>
Но в коде Java < /p>
@Export(name = "process")
public static String process(String input) {
return new StringBuilder(input).reverse().toString();
}
@Export(name = "type")
public static String type(String input) {
return input.getClass().getSimpleName();
}
< /code>
First Process Function работает, но вторая - нет (тип).
и я попробовал много таких функций. Я пытался искать ссылки, но нет никаких ссылок. Затем, используя AI, он говорит, что строка JS не полностью преобразована в java String.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ebassembly
Мобильная версия