4

fread を使用して、C++ の外部ファイルから値を読み込もうとしています。値は uint16 として格納されますが、これは C++ には存在しないようです。グーグルで検索したところ、typedef を使用して独自の uint16 を作成している人を見つけましたが、fread(ptr, uint8, 2, file) を使用して、ptr に格納される 2 つの uint8 を読み取ることができるかどうかも疑問に思っています。

これについて最善の方法を知っている人はいますか?

4

4 に答える 4

4

のような固定サイズの整数型がヘッダーuint16_tで定義されています。<stdint.h>それを含めると、ビジネスになります。

于 2011-06-16T18:38:37.380 に答える
3

あなたはおそらく欲しい:

fread(ptr, sizeof(uint8), 2, file)

私には問題ないように思えますが、fread(ptr, 1, 2, file)さらに優れています。またはfread(ptr, sizeof(uint16_t), 1, file)

ptrこれは、変数自体ではなく、データを保存する場所を指すポインターであると想定しています(そうであれば、を使用します&ptr)。

ただし、一度に 2 バイトを読み取ると、パフォーマンスの問題が発生する可能性があります。メモリ バッファーに読み取ってから解析することを検討してください。

于 2011-06-16T18:36:55.260 に答える
0
#include <stdint.h>

あなたのためにそれを修正する必要があります

于 2011-06-16T19:25:03.990 に答える
-1

使用できる固定サイズはたくさんありますが、この場合に役立つのは uint16_t と __int16 の 2 つです。

于 2011-06-16T18:45:00.843 に答える