如何在C ++中将二进制读/写转换为非二进制读/写

时间:2010-05-09 00:10:01

标签: c++ file-io g++

我从某处读取和写入二进制格式的数据。我想看看它在文件中读取和写入的内容,所以我想将它的二进制读取和写入转换为非二进制读写。此外,当我将二进制写入转换为非二进制写入时,我希望它仍然能够正确读取信息。怎么办呢?

写函数:

int btwrite(short rrn, BTPAGE *page_ptr)
{
//    long lseek(), addr;
    long addr;
    addr = (long) rrn * (long) PAGESIZE + HEADERSIZE;
    lseek(btfd, addr, 0);
    return (write(btfd, page_ptr, PAGESIZE));
}

读取功能:

int btread(short rrn, BTPAGE *page_ptr)
{
//  long lseek(), addr;
    long addr;

    addr = (long)rrn * (long)PAGESIZE + HEADERSIZE;
    lseek(btfd, addr, 0);
    return ( read(btfd, page_ptr, PAGESIZE) );
}

以下是BTPAGE的定义:

typedef struct {
    short keycount;             /* number of keys in page   */
    int  key[MAXKEYS];              /* the actual keys      */
    short child[MAXKEYS+1];     /* ptrs to rrns of descendants  */
} BTPAGE;

1 个答案:

答案 0 :(得分:1)

在C ++中,将重载的流插入运算符添加到BTPAGE类。阅读BTPage后,添加以下内容:

  cout << *page_ptr << endl;

否则,您将需要编辑您的问题,并提供有关您所寻找内容的更多详细信息。例如:

  1. 您想要读取数据吗? 输出1和0?
  2. 您想要逐字节转储吗?
  3. 另外,请提供BTPAGE的声明。