An object containing a Unit8Array is written to flash and read back again.
I think I read somewhere thatthe atob and btoa functions operate on 4 byte increments and you have to pad the length to a integer multiple of 4.
var A=new Uint8Array(8) will work. var A=new Uint8Array(7) won't.
Give it a try anyway.
console.log("Create an object with an Uint8Array");
var A={B:10,C:new Uint8Array(16)};
for(i=0;i<16;i++)A.C[i]=i;
console.log("A= ",A);
The output:
>echo(0);
Create an object with an Uint8Array
A= { "B": 10,
"C": new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
}
Stringify the object
D= {"B":10,"C":new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])}
Parse it back returns undefined
F= undefined
apply btoa trick
A= { "B": 10,
"C": "AAECAwQFBgcICQoLDA0ODw=="
}
stringify
D= {"B":10,"C":"AAECAwQFBgcICQoLDA0ODw=="}
Write D to flash
Read G from flash
G= new Uint8Array([123, 34, 66, 34, 58, 49, 48, 44, 34, 67, 34, 58, 34, 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81, 111, 76, 68, 65, 48, 79, 68, 119, 61, 61, 34, 125])
parse G into H
H= { "B": 10,
"C": "AAECAwQFBgcICQoLDA0ODw=="
}
reverse the trick
H= { "B": 10,
"C": new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
}
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
An object containing a Unit8Array is written to flash and read back again.
I think I read somewhere thatthe atob and btoa functions operate on 4 byte increments and you have to pad the length to a integer multiple of 4.
var A=new Uint8Array(8) will work. var A=new Uint8Array(7) won't.
Give it a try anyway.
The output:
1 Attachment