我正在尝试将编码的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#的双精度格式不同吗?
谢谢。
我设法像这样解码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);
}