C++ 将字节写入文件

C++ 将字节写入文件,c++,binaryfiles,C++,Binaryfiles,我目前正在工作的DBF文件管理器,我有一些问题 构成标题的元素之一是文件更新的最后日期。 问题是:字段格式为YYMMDD,必须有3个字节 如何仅使用3个字节就可以使用该格式写入日期?另外,另一个字段表示文件的类型(如果它有备忘录或没有备忘录) 本例中的文件类型为03h,此字段只能使用1字节。我很困惑 我会将您的数据保存在3个字节中,如下所示 第一个字节=年 第二字节=月份 第三字节=天 每个字段(年、月、日)的域中的每个字节都有足够的空间。您可以使用位移位操作将它们写入整数,如下所示: in

我目前正在工作的DBF文件管理器,我有一些问题

构成标题的元素之一是文件更新的最后日期。 问题是:字段格式为YYMMDD,必须有3个字节

如何仅使用3个字节就可以使用该格式写入日期?另外,另一个字段表示文件的类型(如果它有备忘录或没有备忘录)


本例中的文件类型为03h,此字段只能使用1字节。我很困惑

我会将您的数据保存在3个字节中,如下所示

  • 第一个字节=年
  • 第二字节=月份
  • 第三字节=天
每个字段(年、月、日)的域中的每个字节都有足够的空间。您可以使用位移位操作将它们写入整数,如下所示:

int year = 13;
int month = 7;
int day = 26;
int my_date = (year << 16) | (month << 8) | day;
my_date = 0 | year | month | day

当我写
year年份的第一个字节时:2000+YY。可以从2000年数到2255年

月份的第二个字节:1-12


第三个字节:1-31

好吧,想想一个字节可以代表多少不同的数字:256。因此,您可以在一个字节内存储任意2位(十进制)数字(0-99),并有足够的空间。这有用吗?我想我有这个主意,但我该怎么做呢?我使用putc没有成功putc出了什么问题?我不知道怎么做,所以我用putc一个字符一个字符地写日期。错了吗?字符每个取一个字节。所以如果你需要准确地写3个字节,你需要写一个数字,这个数字有你想要的成分。见下面我的答案。我希望我没有误解你的需要。你能解释一下你在我的约会中做了什么吗?我还在学这门语言
year << 16 = 0 | year | 0 | 0
month << 8 = 0 | 0 | month | 0
day = 0 | 0 | 0 | day
my_date = 0 | year | month | day
year = (my_date & 0xFF0000) >> 16;
month = (my_date & 0xFF00) >> 8;
day = my_date & 0xFF;
my_date = 0 | year | month | day
my_date & 0xFF00 = 0 | 0 | month | 0
(my_date & 0xFF00) >> 8 = 0 | 0 | 0 | month = month