在C ++中使用uint16?

时间:2011-06-16 18:33:41

标签: c++ fread

我正在尝试使用fread来读取C ++中外部文件的值。这些值存储为uint16,这在C ++中似乎不存在。我做了一些谷歌搜索,发现人们使用typedef制作自己的uint16,但我也想知道我是否可以使用fread(ptr,uint8,2,file)读取两个uint8来存储在ptr中。

有没有人对最佳解决方法有任何见解?

4 个答案:

答案 0 :(得分:4)

uint16_t标头中定义了<stdint.h>等固定大小的整数类型。包括那个,你将会开展业务。

答案 1 :(得分:3)

你可能想要:

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

似乎对我而言,fread(ptr, 1, 2, file)甚至更好。或fread(ptr, sizeof(uint16_t), 1, file)

我认为ptr是一个指针,指向您要存储数据的位置,而不是变量本身(如果是 - 请使用&ptr)。

一次读取两个字节可能会成为性能问题,请考虑读入内存缓冲区,然后解析它。

答案 2 :(得分:0)

#include <stdint.h>

应该为你修好

答案 3 :(得分:-1)

你可以使用一堆固定的尺寸,uint16_t和__int16就是两种在这种情况下可以帮到你的尺寸。