当前位置: 首页 > news >正文

golang 解析oracle 数据文件头

package mainimport ("encoding/binary""fmt""io""os"
)
// Powered by 黄林杰 15658655447
// Usered for parser oracle datafile header block 1 ....
// oracle 数据文件头块解析
// KCBlockStruct represents the structure of the Oracle block
type KCBlockStruct struct {TypeKCBH    byteFrmtKCBH    byteRDBAKCBH    uint32ChkvalKCBH  uint16KCCFHDBI    uint32KCCFHDBNX   []byteKCCFHCSQ    uint32KCCFHFSZ    uint32KCCFHFNO    uint16KCCFHTYP    uint16KCVFHRDB    uint32KSCNBAS     uint32KSCNWRP     uint16KCVFHCRT    uint32KCVFHRLC    uint32KCVFHRLS    struct {KSCNBAS uint32KSCNWRP uint16}KCVFHBSBSC  struct {KSCNBAS uint32KSCNWRP uint16}KCVFHSTA    uint16KCVFHCPC    uint32KCVFHCCC    uint32KCVFHTSN    uint32KCVFHTLN    uint16KCVFHTNM    [30]byteKCVFHPRC    uint32KCVFHPRS    struct {KSCNBAS uint32KSCNWRP uint16}KCVCPSN     struct {KSCNBAS uint32KSCNWRP uint16}KCVCPTime   uint32KCVCPThr    uint16KCVCPRA     struct {KCRBASEQ uint32KCRBABNO uint32KCRBABOF uint32}// Add more fields based on your structure
}func main() {// Open the Oracle data filefile, err := os.Open("C:\\Users\\ZMI\\Desktop\\asm-diskb\\newoasm\\SYSTEM.260.1096299059.dbf")if err != nil {fmt.Println("Error opening file:", err)return}defer file.Close()// Read the first block (assuming 8192 bytes)blockSize := 8192block := make([]byte, blockSize)// 指定要读取的块号blockNumber := 1// 计算块的偏移量blockOffset := blockSize * blockNumber// 移动文件指针到块的起始位置_, err = file.Seek(int64(blockOffset), io.SeekStart)if err != nil {fmt.Println("Error seeking to block:", err)return}_, err = file.Read(block)if err != nil {fmt.Println("Error reading file:", err)return}hexString := fmt.Sprintf("%X", block)// 打印结果fmt.Println("oracle 8kb  block Hexadecimal representation:", hexString)// Parse the block using the defined structurekcBlock := parseKCBlock(block)// Print the extracted informationfmt.Printf("TypeKCBH: %X\n", kcBlock.TypeKCBH)fmt.Printf("FrmtKCBH: %X\n", kcBlock.FrmtKCBH)fmt.Printf("RDBAKCBH: %X\n", kcBlock.RDBAKCBH)// Print more fields as neededfmt.Printf("KCCFHDBI: %d\n", kcBlock.KCCFHDBI)fmt.Printf("KCCFHDBNX: %s\n", kcBlock.KCCFHDBNX)
}func parseKCBlock(block []byte) KCBlockStruct {kcBlock := KCBlockStruct{TypeKCBH: block[0],FrmtKCBH: block[1],RDBAKCBH: binary.LittleEndian.Uint32(block[4:8]),// Parse more fields based on your structureKCCFHDBI: binary.LittleEndian.Uint32(block[28:32]),KCCFHDBNX: block[32:40],}return kcBlock
}

##代码执行结果:

##下载地址:

oracle11g数据文件头block1解析资源-CSDN文库

http://www.lryc.cn/news/234652.html

相关文章:

  • van-popup滑动卡顿并且在有时候在ios上经常性滑动卡顿的情况
  • YOLOv7独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
  • ubuntu20.04中编译zlib1.2.11(源码编译)
  • 计算机毕业设计选题推荐-高校后勤报修微信小程序/安卓APP-项目实战
  • 如何零基础自学AI人工智能
  • pm2使用
  • 在Ubuntu或linux中为coreutils工具包的cp和mv命令添加进度条
  • 力扣-58. 最后一个单词的长度
  • 快递鸟荣获全球电子商务创业创新大赛总决赛一等奖
  • 阶段七-Day02-SpringMVC
  • YOLOv5独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
  • 【深度学习】pytorch快速得到mobilenet_v2 pth 和onnx
  • 高防CDN安全防护系统在业务方面的应用
  • opencv(3):控制鼠标,创建 tackbar控件
  • UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果
  • 做完这些_成为机器学习方面的专家
  • kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务
  • 【总结】坐标变换和过渡矩阵(易忘记)
  • 第十一周任务总结
  • Java Web——JavaScript基础
  • Vue3 toRaw 和 markRaw
  • 麒麟信安助力长沙市就业与社保数据服务中心政务系统向自主创新演进
  • 【LeetCode刷题-双指针】--16.最接近的三数之和
  • Mac 安装 protobuf 和Android Studio 使用
  • MongoDB入门级别教程全(Windows版,保姆级教程)
  • 基于机器学习的居民消费影响因子分析预测
  • Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)
  • srs webrtc推拉流环境搭建(公网)
  • 【Flutter】设计原则(2)深入解析 SOLID 原则的应用
  • python爬虫概述及简单实践:获取豆瓣电影排行榜