1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個贊
剛找到在 js 中使用 .net 字節(jié)或浮點(diǎn)數(shù)組的方法。
C#:
[Inject] //Injected JSRuntime from Blazor DI
private IJSRuntime JSRuntime { get; set; }
byte[] bytes1;
float[] floats2;
...
if (JSRuntime is IJSUnmarshalledRuntime webAssemblyJSRuntime)
{
webAssemblyJSRuntime.InvokeUnmarshalled<byte[], float[], object>
("downloadArray", bytes1, floats2);
}
腳本:
function downloadArray(bytes1, floats2) {
// Easy way to convert Uint8 arrays
var byteArray = Blazor.platform.toUint8Array(bytes1);
// Adapted method above for float32
var m = floats2 + 12;
var r = Module.HEAP32[m >> 2]
var j = new Float32Array(Module.HEAPF32.buffer, m + 4, r);
}
這里的結(jié)果是在合理的時(shí)間段內(nèi)分別來自 byte[] 和 float[] 的 Uint8Array 和 Float32Array 對象。
可能有任何獲取 js 數(shù)組的方法,因?yàn)槟梢詮?ArrayBuffers 訪問整個 .net 堆,例如 Module.HEAPU8(Uint8Array 內(nèi)的堆)或 Module.HEAPF32(Float32Array 內(nèi)的堆),并且可以通過 InvokeUnmarshalled 參數(shù)的指針輕松訪問對象.
添加回答
舉報(bào)