所以我必须为文件页面管理器程序编写以下函数,但我不明白如何处理空终止功能。理解文件页面管理器程序的功能
RC insertRecord(FileHandle &fileHandle, const vector<Attribute>
&recordDescriptor, const void *data, RID &rid)
给定一个记录描述符,在由提供的句柄标识的文件中插入一条新记录。你可以假设输入总是正确的并且没有错误。也就是说,您不需要检查 查看输入记录是否具有适当数量的属性或属性类型是否匹配。然而,为了处理属性中的NULL值, ,* data中的第一部分包含传递关于每个字段的空信息的 的n个字节。值n可以通过使用以下公式计算:ceil(记录中的字段数/ 8)。例如,如果有5个字段,则ceil(5/8)= 1 字节。如果有20个字段,大小将为ceil(20/8)= 3个字节。第一个字节 中最左边的位对应于第一个字段。第一个字节中最右边的位对应于第八个字段。如果 有八个以上的字段,则第二个字节中最左边的位对应于第九个字段 依此类推。如果每个字段的相应位设置为1,那么实际数据不包含该字段的任何值 。例如,如果记录中有三个字段,且第二个字段 包含NULL,则字节中的位表示为0100000.此外,在实际数据中,传入记录仅包含第一个和第三个值。也就是说,在这种情况下,第三个字段值是在第一个字段值之后放置的 。
我不明白,所以如果我们有3个属性,那么3/8 = 3个字节,所以前3个字节的数据将对应于null特征;然而,我们如何将这些字节转换为C++中的位,所以我们实际上可以看到空值在哪里?