daisukemaki1003
@daisukemaki1003

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Esp32でunsigned char型をSPIFFSでファイルに保存するには?

解決したいこと

現在Esp32で暗号化(aes)の実装をしております。
暗号化したunsigned char型のデータを
Spiffsに保存し扱えるようにしたいのですが、
書き込みと読み込みの仕方がわからないためご教示願います。

該当するソースコード

// 暗号化したい文字列
unsigned char str[16] = {0x00, }

// encodeしたものをencode_data[16]に格納
unsigned char *encode_data = encode(str)

// spiffsに書き込み
write_sd(encode_data);

// spiffsから読み込み
read_sd();

自分で試した事

unsigned char型をファイルに書き込めなかったので、char にキャストして書き込んだのですが扱う領域が違うようでデータが変わってしまいました。

次にフォーマット指定でunsigned charを書き込んだのですができませんでした。
これは何故だだめだったのがわかりません。

File file = SPIFFS.open(“test.txt”,FILE_WRITE);

for (int i=0; i<16; i++) {
file.printf(“%x”, data[i])
}

0

1Answer

file.printf("%x", data[i]) でうまくいかないのは値の16進数表現を書き込むからです。たとえば file.printf("%x", 0xa0) するとバイト 0x61, 0x30 がファイルに書き込まれます。(それぞれ、 ASCII コードで文字 a, 0 を表す)

バイト列を書き込むには file.write((uint8_t *)data, 16) でいけると思います。

1Like

Comments

  1. ありがとうございます!
    無事解決いたしました。

Your answer might help someone💌