Для уменьшения размера выходного файла я сериализирую массив из строки x,y
до base64
в конце и передаю строку на сторону клиента, на стороне клиента хочу десериализовать base64
двумерного short[,]
массив в JavaScript.
Реализация:
public class DiagnosisSpec
{
public int Covid { get; set; }
public int Infection { get; set; }
public int Other { get; set; }
public ImagesSpec[] Images { get; set; }
}
[Serializable]
public class Contour
{
public short X { get; set; }
public short Y { get; set; }
}
и ImagesSpec
имплементация выглядит следующим образом:
public class ImagesSpec
{
string _strContour;
public int Index { get; set; }
string GetContourAsBase64()
{
Contour[] _contour = (JsonConvert.DeserializeObject<List<short[]>>((string)_strContour) as List<short[]>)
.Select(x => new Contour
{
X = x[0],
Y = x[1]
}).ToArray();
byte[] contourByte;
BinaryFormatter bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, _contour);
contourByte = ms.ToArray();
}
string contourAsBase64 = Convert.ToBase64String(contourByte);
return contourAsBase64;
}
public string Contour
{
get
{
return GetContourAsBase64();
}
set
{
_strContour = value;
}
}
}
есть ли способ десериализации каждого элемента Images
до List<Contour>
в JavaScript что-то вроде:
result.Images.forEach(function (item, index, arr) {
var binary_string = window.atob(item.Contour);
var len = binary_string.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
console.log( bytes.buffer );
});
base64
строка выглядит так: "AAEAAAD/////AQAAAAAAAAAMAgAAAFVNQVJDTy5XZWIuQXBwbGljYXRpb24uTkdXZWIsIFZlcnNpb249OS44LjY0LjI5NSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwEAAAAAAQAAADoAAAAEKk1BUkNPLldlYi5BcHBsaWNhdGlvbi5OR1dlYi5Nb2RlbHMuQ29udG91cgIAAAAJAwAAAAkEAAAACQUAAAAJBgAAAAkHAAAACQgAAAAJCQAAAAkKAAAACQsAAAAJDAAAAAkNAAAACQ4AAAAJDwAAAAkQAAAACREAAAAJEgAAAAkTAAAACRQAAAAJFQAAAAkWAAAACRcAAAAJGAAAAAkZAAAACRoAAAAJGwAAAAkcAAAACR0AAAAJHgAAAAkfAAAACSAAAAAJIQAAAAkiAAAACSMAAAAJJAAAAAklAAAACSYAAAAJJwAAAAkoAAAACSkAAAAJKgAAAAkrAAAACSwAAAAJLQAAAAkuAAAACS8AAAAJMAAAAAkxAAAACTIAAAAJMwAAAAk0AAAACTUAAAAJNgAAAAk3AAAACTgAAAAJOQAAAAk6AAAACTsAAAAJPAAAAAUDAAAAKk1BUkNPLldlYi5BcHBsaWNhdGlvbi5OR1dlYi5Nb2RlbHMuQ29udG91cgIAAAASPFg+a19fQmFja2luZ0ZpZWxkEjxZPmtfX0JhY2tpbmdGaWVsZAAABwcCAAAAqADGAAEEAAAAAwAAAKgAxwABBQAAAAMAAACoAMgAAQYAAAADAAAAqADJAAEHAAAAAwAAAKgAygABCAAAAAMAAACpAMYAAQkAAAADAAAAqQDKAAEKAAAAAwAAAKoAxgABCwAAAAMAAACqAMoAAQwAAAADAAAAqwDGAAENAAAAAwAAAKsAxwABDgAAAAMAAACrAMkAAQ8AAAADAAAAqwDKAAEQAAAAAwAAAKwAxwABEQAAAAMAAACsAMgAARIAAAADAAAArADJAAETAAAAAwAAAK4ALAEBFAAAAAMAAACuAC0BARUAAAADAAAArgAuAQEWAAAAAwAAAK4ALwEBFwAAAAMAAACuADABARgAAAADAAAArwArAQEZAAAAAwAAAK8ALAEBGgAAAAMAAACvADABARsAAAADAAAAsAAqAQEcAAAAAwAAALAAKwEBHQAAAAMAAACwAC8BAR4AAAADAAAAsAAwAQEfAAAAAwAAALEAKQEBIAAAAAMAAACxACoBASEAAAADAAAAsQAtAQEiAAAAAwAAALEALgEBIwAAAAMAAACxAC8BASQAAAADAAAAsgAoAQElAAAAAwAAALIAKQEBJgAAAAMAAACyACwBAScAAAADAAAAsgAtAQEoAAAAAwAAALMAKAEBKQAAAAMAAACzACsBASoAAAADAAAAswAsAQErAAAAAwAAALQAKAEBLAAAAAMAAAC0ACkBAS0AAAADAAAAtAAqAQEuAAAAAwAAALQAKwEBLwAAAAMAAAAcAdQAATAAAAADAAAAHAHVAAExAAAAAwAAABwB1gABMgAAAAMAAAAcAdcAATMAAAADAAAAHAHYAAE0AAAAAwAAAB0B1AABNQAAAAMAAAAdAdgAATYAAAADAAAAHgHUAAE3AAAAAwAAAB4B1QABOAAAAAMAAAAeAdgAATkAAAADAAAAHwHVAAE6AAAAAwAAAB8B1gABOwAAAAMAAAAfAdcAATwAAAADAAAAHwHYAAs="
заранее спасибо.