DBF文件实例分析(转)
?DBF文件數據結構實例分析
下面以一個具體實例來分析DBF數據結構:
該表格數據為:
用UltraEdit打開該dbf文件,其內容如下:
現在先分解一下,找出文件頭,并分析一下文件頭的內容。首先看第一個字節,值為03,這個是16進制的數據,第一個字節表示數據庫類型,值03即0x03,對應FoxBASE+/Dbase III plus,。然后看第4個字節到第7個字節,這一段表示文件中的記錄條數,即表格的行數,其Byte值為0A 00 00 00,轉換成Int32即為10,即表格的行數為10。關于Byte數組轉換成數值類型,其代碼如下:
????????/// <summary>
????????/// 將字節組轉換成為整型
????????/// </summary>
????????/// <param name="tempBytes">字節數組</param>
????????/// <returns></returns>
????????public static Int32 ConvertBytesToInt32(byte[] tempBytes)
????????{
????????????Int32 result = System.BitConverter.ToInt32(tempBytes, 0);
????????????return result;
????????}
接著看第8個和第9字節,其值為61 00,轉換成Int16其值即為97,意思就是說文件頭所占字節長度為97,所以文件頭的范圍就是下面紅色框內:
藍色框為左邊紅色框對應的值,這個僅供參考。下面來仔細分析紅色框中的數據:
?
前面的第1個字節到第8個和第9個字節我們前面都已經分析過了。第10和11個字節對應值表示一行數據的長度,其值為13 00,轉換為Int其值為19,即每行數據占19個字節的長度,這個值應該等于接下來定義字段長度之和+1(每行最前面還有一個16進制值為20的字節)。
接下來的從第12個到31個都為保留字節,可以不管。因為前面已知文件頭的長,為97,而用于文件頭定義就占了32個,文件頭最后一個字節用于表示字段定義結束,也占了一個,于是就只剩下97-32-1=64,而每定義一個字段占32個字節,所以就只有2個字段。第一個字段就是從第33個字節開始到第33+32個字節,如下面黃色框中:
下面參考第三個表來分析這段數據,已知從第0開始到10這11個字節表示的字段的名稱,將這11個字節數組轉換成字符串即為字段名稱。將字節數組轉換成字符串代碼如下:
????????/// <summary>
????????/// 將字節組轉換成為字符串
????????/// </summary>
????????/// <param name="tempBytes">字節數組</param>
????????/// <returns></returns>
????????public static string ConvertBytesToString(byte[] tempBytes)
????????{
????????????string result = System.Text.Encoding.GetEncoding("gb2312").GetString(tempBytes);???????????
????????????return result;
????????}
將第0到第10個字節值轉換成字符串,其值為“列1”,即第一個字段的名稱。
第11個字節為字段數據類型,該值為4E(上圖中用綠色標出),轉換為char即為N,N表示數值類型,即第一列的數據類型為數值類型。
第12個到第15個為保留字節,暫不管。第16個字節表示字段的長度,其值為09(上圖中用綠色標出),轉換為Int其值即為9,即表示該字段長度為9個字節。后面從第17到31個字節都可暫不管。這樣就分析完了一個字段的定義,安裝同樣的思路分析第二個字段,可以得到第二字段名稱為“列2”,字段類型也為數值類型(N),字段長度也為9個字節。如下圖所示,注意綠色框中的數據:
在第二個字段定義完成后,接下來的一個字節值為0D,即表示結束了字段定義,剛好在此也是97個字節。從第98個字節開始就是表格的數據對象了,每行占19個字節,其中第一個字節值為20,不屬于表格單元的值,即從第99個字節開始,前面9個字節對應的值為第一行第一列單元的值,接著的9個字節是第一行第二列單元的值,在接下來的一個字節為默認字節,接著的9個字節就是第2行第一列單元的值,接下來的9個字節就是第2行第2列單元的值,依次類推,直到結束位置。
---------------------?
作者:xwebsite?
來源:CSDN?
原文:https://blog.csdn.net/xwebsite/article/details/6912151?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的DBF文件实例分析(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Allure测试报告定制化
- 下一篇: week 5