c # double [] двоичный массив в js Float64Array через base64 - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь отправить закодированный массив 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 #?

Спасибо.

1 Ответ

0 голосов
/ 09 октября 2019

Мне удалось декодировать значения типа 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);
    }

   let values = new Float64Array(buffer);
   return Array.from(values); 
}
...