C#/TypeScript byte-array blir kodet når den sendes til klienten
Jeg prøver å sende en byte-array hentet fra databasen min via C# til front-end-klienten min, som er skrevet i JavaScript/TypeScript, men det ser ut til at byte-arrayen blir kodet et sted mellom når den sendes fra back-end og når den kommer til front-end.
Dataene i databasen er en varbinary med verdien: 0x00000001. Jeg har satt et breakpoint der C#-koden min returnerer den hentede verdien, og jeg får en byte-array med verdien: [0, 0, 0, 1]. Men når den kommer til klienten, er verdien: "AAAAAQ==".
Jeg har prøvd å dekode det ved å bruke følgende kode:
let encodedString = encodeURI(encodeURIComponent(flag));
let arr = [];
for (let i = 0; i < encodedString.length; i++) {
arr.push(encodedString.charCodeAt(i));
}
Men den koden returnerer denne matrisen av verdier: [65, 65, 65, 65, 65, 81, 37, 50, 53, 51, 68, 37, 50, 53, 51, 68]
Hva forårsaker at dataene blir kodet, og hvordan kan jeg enten dekode dem i TypeScript eller forhindre at de blir kodet når de sendes til klienten?
Svar #1
"AAAAAQ==" er Base64-kodet versjon av 0x00000001. Derfor må du konvertere det tilbake ved å bruke atob og deretter legge hver char-kode inn i en array.
let text = 'AAAAAQ==';
let bin = atob(text);
let bytes = [];
for (let i = 0; i< bin.length; i++){
bytes.push(bin.charCodeAt(i));
}
console.log(bytes);