本文参考自 sharpSbn 与 hasBeen 项目。
1. Sbn 文件格式
1.1 Header 部分(100 Byte)
起始位置 | 名称 | 值 | 类型 | 位序 |
---|---|---|---|---|
Byte0 | FileCode | 9994 | Int32 | Big |
Byte4 | 未知 | -400 | Int32 | Big |
Byte8 | 未使用 | 0 | Int32 | Big |
Byte12 | 未使用 | 0 | Int32 | Big |
Byte16 | 未使用 | 0 | Int32 | Big |
Byte20 | 未使用 | 0 | Int32 | Big |
Byte24 | 文件长度 | FileLength | Int32 | Big |
Byte28 | 记录总数 | NumRecords | Int32 | Big |
Byte32 | X 最小值 | xmin | Double | Big |
Byte40 | Y 最小值 | ymin | Double | Big |
Byte48 | X 最大值 | xmax | Double | Big |
Byte56 | Y 最大值 | ymax | Double | Big |
Byte64 | Z 最小值 | zmin | Double | Big |
Byte72 | Z 最大值 | zmax | Double | Big |
Byte80 | M 最小值 | mmin | Double | Big |
Byte88 | M 最大值 | mmax | Double | Big |
Byte96 | 未知 | 0 | Int32 | Big? |
1.2 Tree 部分
1.2.1 TreeNode 部分
起始位置 | 名称 | 值 | 类型 | 位序 |
---|---|---|---|---|
Byte100 | 记录号 | 1 | Int32 | Big |
Byte104 | 记录长度 | Record_Length | Int32 | Big |
- | - | - | - | - |
循环 Begin1: | ||||
Bin 序号 | Bin_Number | Int32 | Big | |
Shape 数量 | Bin 内部的图形数量 | Int32 | Big | |
End |
1.2.2 TreeFeature 部分
起始位置 | 名称 | 值 | 类型 | 位序 |
---|---|---|---|---|
Byte108 + 记录长度 * 4 | Bin 序号 | Bin_Number | Int32 | Big |
Byte112 + 记录长度 * 4 | 要素组长度 | Bin 内部的图形对应二进制信息的长度 | Int32 | Big |
- | - | - | - | - |
循环 Begin2: | ||||
X 最小值 | XMin | byte | Big | |
Y 最小值 | YMin | byte | Big | |
X 最大值 | XMax | byte | Big | |
Y 最大值 | YMax | byte | Big | |
Shape 序号 | 图形序号 | Integer | Big | |
End |
2. Sbx格式
Sbx文件是Sbx的索引文件,作用类似与Shx。
起始位置 | 名称 | 值 | 类型 | 位序 |
---|---|---|---|---|
Byte0 | FileCode | 9994 | Int32 | Big |
Byte4 | 未知 | -400 | Int32 | Big |
Byte8 | 未使用 | 0 | Int32 | Big |
Byte12 | 未使用 | 0 | Int32 | Big |
Byte16 | 未使用 | 0 | Int32 | Big |
Byte20 | 未使用 | 0 | Int32 | Big |
Byte24 | 文件长度 | FileLength | Int32 | Big |
Byte28 | 记录总数 | NumRecords | Int32 | Big |
Byte32 | X 最小值 | xmin | Double | Big |
Byte40 | Y 最小值 | ymin | Double | Big |
Byte48 | X 最大值 | xmax | Double | Big |
Byte56 | Y 最大值 | ymax | Double | Big |
Byte64 | Z 最小值 | zmin | Double | Big |
Byte72 | Z 最大值 | zmax | Double | Big |
Byte80 | M 最小值 | mmin | Double | Big |
Byte88 | M 最大值 | mmax | Double | Big |
Byte96 | 未使用 | 0 | Int32 | Big |
– | – | – | – | – |
循环 Begin: | ||||
记录起始位置 | Offset | Int32 | Big | |
记录长度 | Length | Int32 | Big | |
End |