[c#double []二进制数组通过base64转换为js Float64Array

问题描述 投票:0回答:1

我正在尝试将编码的double []数组作为base64字符串从C#服务器发送到打字稿客户端。

base64是这样创建的:

double[] values = new double[]{...}
var bytes = values.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
var stringToBeSent = Convert.ToBase64String(bytes)

并且在客户端上,我试图像这样解码它:

let binary_string =  atob(encodedString);
const byteNumbers = new Array(binary_string.length);
for (let i = 0; i < binary_string.length; i++) {
    byteNumbers[i] = binary_string.charCodeAt(i);
}

const values = new Float64Array(byteNumbers);
return Array.from(values);

但是,这些值与我发送的值有很大不同。有人遇到过这个问题吗? Float64格式与C#的双精度格式不同吗?

谢谢。

c# angular typescript base64 double
1个回答
0
投票

我设法像这样解码double []值:

decodeFromBase64(encodedString: string): number[] {
    let binary_string = atob(encodedString);
    let buffer = new ArrayBuffer(binary_string.length);
    let bytes_buffer = new Uint8Array(buffer);

    for (let i = 0; i < binary_string.length; i++) {
      bytes_buffer[i] = binary_string.charCodeAt(i);
    }

   const values = new Float64Array(buffer);
   return Array.from(values); 
}
© www.soinside.com 2019 - 2024. All rights reserved.