Tengo problemas para escribir una matriz desde JS, especialmente con valores decimales que son mayores que 100. Si uso el método c# File.WriteAllBytes , obtengo un resultado diferente cuando uso nodejs appendFile , estoy usando appendFile y no writeFile porque está dentro de un bucle. Tomé una matriz codificada para probar y esto es lo que obtuve:
C#:
byte[] arr2 = new byte[] {78, 51, 49, 48, 48, 48, 85, 49, 164, 0, 67, 54, 52, 49, 53, 57, 52, 57, 52, 66, 52, 50, 49, 48, 69, 57, 70, 69, 55, 70, 50, 52, 70, 48, 69, 52, 70, 70, 50, 67, 67, 55, 50, 67, 69, 54, 53, 56, 66, 67, 53, 66}; File.WriteAllBytes("test", arr2);JS:
const fsp = require("fs").promises; ... ... const writeDataToFileFile = async (data: Buffer) => { const appTempPath = app.getPath("temp"); const pathToWrite = path.join(appTempPath, "test.bin"); await fsp.appendFile(pathToWrite, `${data}`); }; const arr = [ 78, 51, 49, 48, 48, 48, 85, 49, 164, 0, 67, 54, 52, 49, 53, 57, 52, 57, 52, 66, 52, 50, 49, 48, 69, 57, 70, 69, 55, 70, 50, 52, 70, 48, 69, 52, 70, 70, 50, 67, 67, 55, 50, 67, 69, 54, 53, 56, 66, 67, 53, 66, ]; logger.info(arr); const bufferFromArr = Buffer.from(arr); logger.info(bufferFromArr); await writeDataToFileFile(bufferFromArr); El problema M con JS es el � que representa el valor 164, al registrar el búfer.
este es el búfer: N31000U1� C64159494B4210E9FE7F24F0E4FF2CC72CE658BC5B
salida del archivo c#: N31000U1₪.C64
Salida del archivo JS: N31000U1ן¿½.C64
EDITAR: descubrí que c # convierte el 164 en hexadecimal y luego lo escribe. La pregunta es cómo lograr esto en JS