特に、私はバイナリファイルでFPGAをプログラムしようとしています。トランザクションレジスタは16ビット幅です。だから私はuint16_tの配列を作成し、それを入力ファイルで埋める必要があります。ここに私が試したものです:C++では、charデータ型よりも広い配列にファイルを正しく読み込むにはどうすればよいですか?
int bufferSize = 512;
uint16_t buffer[bufferSize];
std::ifstream *pStream = new std::ifstream(filepath);
if(pStream->is_open() == true)
{
pStream->read((char *)buffer, bufferSize);
}
私はGDBを通じて伝えることができるものから、(すなわち、0xBEEFを期待0xEFBEを得ました。)各配列ノードが逆方向にあるようだ
BTW: 'if(pStream-> is_open()== true)'は一種のprolixです。 – TonyK
@TonyK合意。私はコーディングスタイルの制約の下にいる:それは私にもバグだ。 「もしかして」はかなり明白に聞こえる。 –
'pStream-> read((char *)buffer、bufferSize * sizeof(uint16_t));も使用してください。そうでなければ、書き込みを期待していたデータの半分だけを書きます。しかし、本当の問題は、もちろん、Big vs Little Endiannessです。 –