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.mzph.cn/news/144696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在聊天记录中实时查找大量的微信群二维码

10-5 如果你有需要从微信里收到的大量信息中实时找到别人发到群里的二维码,那本文非常适合你阅读,因为本文的教程,可以让你在海量的微信消息中,实时地把二维码自动挑出来,并且帮你分类保存。 如果你是做网推的&#…

Reids集群

目录 一、集群的概念 1.为什么要搭建集群? 2.Redis搭建集群是否需要考虑状态同步的问题? 二、Redis集群的模式 1.redis集群--主从模式 1.1什么是Redis的主从模式? 1.2.主从模式它们之间的数据是怎么实现一个同步的? 1.3.主…

图形学 -- Geometry几何

隐式 implicit 基于给点归类,满足某些关系的点 缺点:不规则表面难以描述! algebraic surface 直接用数学公式表示:不直观! Constructive Solid Geometry(CSG) 用简单形状进行加减 distance …

腾讯云轻量服务器购买优惠,腾讯云轻量应用服务器优惠购买方法

你是否曾经为如何选择合适的服务器而苦恼?在互联网的海洋中,如何找到一个性价比高,性能稳定,价格合理的服务器供应商,确实是一个让人头疼的问题。今天,我要向你介绍的,是腾讯云轻量应用服务器的…

Perl爬虫程序的框架

Perl爬虫程序的框架,这个框架可以用来爬取任何网页的内容。 perl #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # 创建LWP::UserAgent对象 my $ua LWP::UserAgent->new; # 设置代理信息 $ua->proxy(http, ); …

Linux C/C++全栈开发知识图谱(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)

众所周知,在所有的编程语言中,C语言是一门颇具学习难度,需要很长学习周期的编程语言。甚至很多人经常听到一句调侃的话语——“C,从入门到放弃”。 C界的知名书籍特别多,从简单到高端书籍,许多书籍都是C之…

Java 反射设置List属性

使用 Java 反射可以动态地设置对象的属性值,包括 List 类型的属性。以下是一个示例代码,演示如何通过反射设置 List 类型的属性: 假设有一个类 Person,包含一个 List 类型的属性 names: java public class Person { …

SpringBoot--中间件技术-2:整合redis,redis实战小案例,springboot cache,cache简化redis的实现,含代码

SpringBoot整合Redis 实现步骤 导pom文件坐标 <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>yaml主配置文件&#xff0c;配置…

图论与网络优化2

CSDN 有字数限制&#xff0c;因此笔记分别发布&#xff0c;目前&#xff1a; 【笔记1】概念与计算、树及其算法【笔记2】容量网络模型 4 最大流及其算法 4.1 容量网络模型 4.1.1 容量网络 容量网络&#xff1a;如果一个加权有向网络 D D D 满足如下三个条件&#xff1a;①…

【Seata源码学习 】 篇二 TM与RM初始化过程

【Seata源码学习 】 篇二 TM与RM初始化过程 1.GlobalTransactionScanner 初始化 GlobalTransactionScanner 实现了InitializingBean 接口&#xff0c;在初始化后将执行自定义的初始化方法 io.seata.spring.annotation.GlobalTransactionScanner#afterPropertiesSet Override…

关于Chrome中F12调试Console输入多行

在chrome 浏览器中使用console调试的时&#xff0c;如果想在console中输入多行代码&#xff0c;需要进行换行。 这时我们可以使用 [ Shift Enter ] 。也叫&#xff1a; 软回车。

数据分析 - 离散概率分布的运用

期望公式 期望的方差 期望的标准差

操作系统 day10(调度的概念、层次、七状态模型)

调度的概念 调度的层次 作业调度&#xff08;高级调度&#xff09; 进程调度&#xff08;低级调度&#xff09; 内存调度&#xff08;中级调度&#xff09; 挂起态与七状态模型 三层调度的联系和对比

使用docker部署ELK日志框架-Elasticsearch

一、ELK知识了解 1-ELK组件 工作原理&#xff1a; &#xff08;1&#xff09;在所有需要收集日志的服务器上部署Logstash&#xff1b;或者先将日志进行集中化管理在日志服务器上&#xff0c;在日志服务器上部署 Logstash。 &#xff08;2&#xff09;Logstash 收集日志&#…

WPF程序给按钮增加不同状态的图片

首先我们在资源里添加几个图片&#xff0c;Up&#xff0c;Over和Down状态。 然后我们创建一个Style。默认我们的背景设置成Up 然后在Triggers里添加代码&#xff0c;当Property&#xff1a;IsMouseOver为True的时候更换成Over&#xff1b;当Property&#xff1a;IsPressed为Tr…

AR人脸道具SDK,打造极致用户体验

为了满足企业在AR领域的应用需求&#xff0c;美摄科技推出了一款领先的AR人脸道具SDK&#xff0c;旨在帮助企业快速、高效地开发出具有丰富玩法体验的AR应用&#xff0c;从而提升企业的竞争力和市场份额。 一、丰富的AR人脸道具&#xff0c;满足多样化需求 美摄科技AR人脸道具…

JAVA安全之Shrio550-721漏洞原理及复现

前言 关于shrio漏洞&#xff0c;网上有很多博文讲解&#xff0c;这些博文对漏洞的解释似乎有一套约定俗成的说辞&#xff0c;让人云里来云里去&#xff0c;都没有对漏洞产生的原因深入地去探究..... 本文从现象到本质&#xff0c;旨在解释清楚Shrio漏洞是怎么回事&#xff01…

Opencv!!在树莓派上安装Opencv!

一、更新树莓派系统 sudo apt-get update sudo apt-get upgrade二、安装python-opencv sudo apt-get install libopencv-dev sudo apt-get install python3-opencv三、查看是否安装成功 按以下命令顺序执行&#xff1a; python import cv2 cv2.__version__如果出现版本号&a…

x3daudio1_7.dll错误:解决方法和丢失原因及作用

x3daudio1_7.dll是Windows操作系统中的一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;主要作用是为DirectX音频提供支持。DirectX是微软推出的一套多媒体应用程序开发接口&#xff0c;广泛应用于游戏、多媒体制作等领域。x3daudio1_7.dll文件包含了许多与三维音频…

2.5 Windows驱动开发:DRIVER_OBJECT对象结构

在Windows内核中&#xff0c;每个设备驱动程序都需要一个DRIVER_OBJECT对象&#xff0c;该对象由系统创建并传递给驱动程序的DriverEntry函数。驱动程序使用此对象来注册与设备对象和其他系统对象的交互&#xff0c;并在操作系统需要与驱动程序进行交互时使用此对象。DRIVER_OB…