【发布时间】:2021-02-20 19:46:58
【问题描述】:
我还在学习Cpp,如果我在这里理解有误,请指教。
使用 ESP32,我正在尝试将文件读/写到 Flash/FFat。这是我创建的方法,它应该从闪存中读取文件并将其加载到 PSRAM 中:
unsigned char* storage_read(char* path) {
File file = FFat.open(path);
if(!file) {
Serial.println("no file");
return 0x00;
}
int count = file.size();
unsigned char* buffer = (unsigned char*)ps_malloc(count);
Serial.printf("Bytes: %d\n", count);
Serial.printf("Count: %d\n", sizeof(buffer));
for (int i = 0; i < count; i++) {
buffer[i] = (unsigned char)file.read();
}
file.close();
return buffer;
}
问题是我得到了我的 b64 数据文件的内容,并在末尾添加了几个额外的数据字节。
调用方法:
Serial.printf("Got: %s", storage_read("/frame/testframe-000.b64"));
我得到了输出:
字节:684
数量:4
得到:+
为什么 sizeof 不能返回正确的尺寸?
将这个字符串加载到缓冲区中的正确方法是什么?
【问题讨论】:
标签: c++ c arduino esp32 arduino-ide