2010-05-09 112 views
0

我有一些以二進制格式讀寫數據的C++代碼。我想看看它在文件中讀取和寫入的內容,所以我想將它轉換爲二進制讀取和寫入非二進制讀寫。另外,當我將二進制寫入轉換爲非二進制寫入時,我希望它仍然能夠正確讀取信息。如何才能做到這一點?如何在C++中將二進制讀取/寫入轉換爲非二進制讀取/寫入

寫入功能:

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)); 
} 

read函數:

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; 
+0

需要更多的細節,尤其是'BTPAGE'。 – 2010-05-09 00:24:34

+0

我會藉此機會插入Google的協議緩衝區:http://code.google.com/apis/protocolbuffers/ – Stephen 2010-05-09 00:49:24

+0

編寫檢查二進制文件格式的工具是否足夠,或者您是否需要查看它來自作家計劃? – Stephen 2010-05-09 00:52:09

回答

1

在C++中,一個重載流插入操作符添加到BTPAGE類。你讀了BTPage後,添加以下內容:

cout << *page_ptr << endl; 

否則,你將不得不編輯你的問題更多的細節你在找什麼。例如:

  1. 要讀取的數據是 1和0的輸出嗎?
  2. 你想要逐字節轉儲嗎?

另外,請提供BTPAGE的聲明。

+0

我不想看到二進制文件,我希望在將它們轉換爲二進制文件並寫入磁盤之前查看實際值。 – neuromancer 2010-05-09 01:32:48