を介してPNG画像からバイトを読み取っていますstd::basic_ifstream<std::uint8_t>
。32 ビット int として解釈されるべき 4 バイトのシーケンスの読み取りに問題があります。
std::uint32_t read_chunk_length(std::basic_ifstream<std::uint8_t> &ifs) {
std::uint32_t length;
ifs.read(reinterpret_cast<std::uint8_t*>(&length), 4);
return length;
}
00 00 00 0d であり、したがって 0xd (または 13) であるはずのシーケンスを読み取ると、上記の関数は 0xd000000 (または代わりに 218103808) を返します。質問が些細な場合はお詫び申し上げます。