我已经完成了一个系统来从Arduino上的SD card读取图像,并将所有这些字节发送到Node.js服务器。
71%73%70%56%57%97%50%0%50%0%247%0%0%150%140%115%102%94%69%198%187%159%123%114 %90%71%71%71%138%129%101%202%193%166%201%193%172%238%234%221%200%197%188%140%135%122%211%201%171 %67%59%38%235%229%209%250%250%250%229%228%226%166%157%131%134%126%103%193%180%142%228%220%198%130 %130%130%225%221%209%227%221%202%228%218%188%245%241%230%38%37%37%156%145%115%248%243%228%195%185 %157%211%202%180%74%66%42%209%198%162%108%98%70%234%230%219%187%179%156%219%211%187%92%84%61 %241%238%230%220%218%211%231%228%220%206%194%159%248%246%242%118%108%83%252%251%249%233%225%202%23 %19%9%103%77%0%248%244%232%220%211%181%243%236%214%128%116%82%253%251%246%33%29%18%176%163 %125%252%252%251%220%213%192%238%236%233%187%174%138%162%148%108%109%102%84%131%127%117%181%172%145 %211%“
我检查过每次使用相同的数字我都有相同的缓冲区。问题是将这些数字转换为文件,简而言之:重新创建文件。
我正在寻找文件的字节解码,我找到了这个函数:
var chars = data.split("%");
function pack(utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext[i];
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext[(i+1)];
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext[(i+1)];
c3 = utftext[(i+2)];
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
pack(chars);
此功能仅适用于一半。标题应以“GIF89a2”开头,我可以在从Node.js重新创建的文件中看到相同的结果,但其他奇怪的符号不一样。
这是我用来将字符串写入文件的方法:
writeStream.write(pack(chars));
我确信有一个系统可以在我的Node.js服务器上重新创建图像,但我不是那个专家。