日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DBF文件实例分析(转)

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件实例分析(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。