python使用struct进行二进制文件的读写

Python按连接拆分pcap文件 Python按连接拆分pcap文件,将文件拆成一个一个的小包(按照连接) 立即下载
1.struct pack/unpack的使用
python中提供了struct包,使用struct.pack/unpack函数可以进行二进制文件的操作。
在学习wireshark pcap文件格式过程中,由于其为二进制文件,不方便读取。于是使用python将其转换成16进制字符型文件输出,实现代码如下:
import struct

class FileConvert(object):
    ''' test python file'''
    def __init__(self):
        self.aa = 0
        self.bb = 0
        
    def convertPcapToHex(self,debugFlg=0):
        infile = open("test.pcap",'rb')
        outfile = open("testRslt.txt",'w')
        a = int(0)

        while True:
            a = int(0)
            a = infile.read(4)
            #print(type(a))
            #print(len(a))
            dataSaveNum = len(a)
            if not a:
                break
            if(len(a) == 4):
                pass
            elif(len(a) != 0):
                loopTime = 4 - len(a)
                while (loopTime > 0):
                    loopTime = loopTime - 1
                    a = a + b'\x00'
            z = struct.unpack('i',a)
            unNeg = z[0] & 0xFFFFFFFF #负数的验证
            if(dataSaveNum == 4):
                outfile.write("%08x"%unNeg)
                dataSaveNum = 0
            
            while(dataSaveNum > 0):
                saveData = unNeg&0xFF
                #保留单个字节
                #outfile.write("%08x"%unNeg)
                unNeg = unNeg >> 8
                dataSaveNum = dataSaveNum - 1
                outfile.write("%02x"%saveData)
                
            if(debugFlg == 1):
                outfile.write("\n")
                
        infile.close()
        outfile.close()
      
    def convertHexToPcap(self):
        infile = open("testRslt.txt",'r')
        outfile = open("another.pcap",'wb')
        #for a in infile.read():
        while True:
            a = infile.read(8)
            #print(type(a))
            #print(b);
            if not a:
                break
            if(len(a)!= 0):
                #16进制转换10进制数
                b=int(a,16)
                covertValue = struct.pack("L",b)
                outfile.write(covertValue)
            #outfile.write("%s"%a)
            #outfile.write("\n")
        infile.close()
        outfile.close()

if __name__ == '__main__':
    fileCvrt = FileConvert()
    fileCvrt.convertPcapToHex()
    fileCvrt.convertHexToPcap()
代码实现:将对应的pcap文件装换成16进制字符型txt文件,然后在将txt文件翻转为相应的pcap二进制格式文件。
2.几个问题注意点
负数的16进制格式输出,需要进行&0xFFFFFFFF的操作,否则输出为符号加十六进制数格式;文件的二进制读写格式需要设置'b'选项,二进制读取"rb",而进制写入"wb";pack/unpack使用时参数和对应类型的字节数需要对应,否则将会出现运行错误。
SpringBoot项目实战:5分钟搞定豆包大模型API接入(附完整代码) 本文详细介绍了如何在SpringBoot项目中快速集成豆包大模型API,仅需5分钟即可完成。从环境准备、依赖配置到核心服务封装和控制器层实现,提供了完整的代码示例和实战技巧,帮助开发者高效接入大模型能力,提升智能客服等应用的开发效率。 阅读详情

相关推荐

锁定放大器

锁定放大器

qq_46757048的博客 4706

Python 实例|struct|使用 struct 读写字节流样例

Python 使用 struct 读写字节流样例

长行 838

MATLAB并行开不了的解决办法

在服务器上新安装了MATLAB 2013b,在开并行计算的时候出现了下列问题 经过在网上搜多这个问题,我感觉这个问题应该是安装的时候的验证问题或者激活不成功之类的。注意其中有一句validate the profile ‘local’ in the Cluster Profile Manager.在matlab官网上找到了设置Cluster Manager的教程,如下 parallel>

sinat_36713319的博客 5987

Python3操作文件系列(二):文件数据读写|二进制数据读写

Python文件创建 Python文件数据|二进制数据读写

天涯芳草 1604

SIwave学习记录:电热耦合仿真

SIwave电热耦合仿真

m0_68174736的博客 2335

【CubeMX】STM32G474 HRTIM 死区时间与互补PWM实战解析

本文深入解析STM32G474的HRTIM高分辨率定时器在互补PWM生成与死区时间配置中的应用。通过CubeMX工具详细演示时钟配置、单路PWM基础、互补输出与死区时间设置,并结合逆变器等电力电子实战案例,帮助开发者避免直通风险,优化系统性能。

efc12345678的博客 746

Python使用struct模块对二进制文件进行读写(配例题)

前言 在网络通信当中,大多传递的数据是以二进制流存在的,比如很多格式的文件、音乐、流媒体等都是二进制流的形式。当传递字符串这种数据时,不必担心太多的问题,而当传递诸如int、char之类的基本数据的时候,就需要有一种机制将某些特定的结构体类型打包成二进制流的字符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的基本数据。 Python中的struct模块就提供了以上的这种机制,是比较常用的对象序列化和二进制读写模块。 在此模块中,最常用的两个函数是pack()和unpack(),很明显,这

秋之颂的博客 5285

带隙基准源要点

要点: 负反馈>正反馈;电流镜匹配;双极型晶体管匹配;电阻匹配; 经过R0的电流????????????=????????????????−????????????????????????=∆????????????????????i_R0=(〖VBE〗_1-〖VBE〗_2)/R_0 =∆VBE/R_0 经过R1的电流????????????=i_R1= ????????????????????VBE/R_1 零温电流I = ∆????????????????????∆VBE/R_0 +

HI_WALLE的博客 2264

python读取二进制文件_python使用struct进行二进制文件的读写

import structclass FileConvert(object):''' test python file'''def __init__(self):self.aa = 0self.bb = 0def convertPcapToHex(self,debugFlg=0):infile = open("test.pcap",'rb')outfile = open("testRslt.txt...

weixin_39818264的博客 254

使用Spring Cloud实现银行核心系统的案例示例

以下是一个基于Spring Cloud的银行核心业务系统实现方案,涵盖架构设计、关键模块实现与生产级部署方案。该系统设计满足金融级高可用、强一致性和监管合规要求。

银行信息系统应用架构详解 1172

【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管

本文介绍了基于51单片机外部中断(INT0/INT1)的四个实践案例:1)INT0控制LED开关;2)INT0中断实现数码管计数/清零;3)INT0中断构建秒表功能(启动/暂停/清零);4)INT0/INT1双中断独立控制两组数码管计数。每个案例包含电路原理图、接线说明及完整源代码,重点演示了外部中断在硬件控制中的应用方法。附加硬件工程师笔试面试资料链接,涵盖器件知识、Multisim教程等内容,适合嵌入式学习者参考实践。(149字)

XU157303764的博客 1911

Python使用struct处理二进制

有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize() pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似...

3104

几种常见的Web攻击

几种常见的Web攻击 文章目录几种常见的Web攻击一、DoS攻击1.SYN洪水攻击2.IP欺骗3.Land攻击4.针对DoS攻击的防御二、CSRF攻击1. CSRF攻击的发生有三个必要条件:2.几种防护方法:三、XSS漏洞攻击1.非持久型XSS漏洞2.持久型XSS漏洞四、SQL注入1.SQL注入的危害2.SQL注入的方式3.防止SQL注入的解决方案 一、DoS攻击 DoS(Denial of Service),拒绝服务,顾名思义这种攻击是为了让服务器无法提供正常服务,最常见的DoS攻击是网络带宽攻击和连

wolfGuiDao的博客 1259

python写二进制文件_python使用struct库对二进制文件进行读写

很多时候二进制文件常常用16进制代表一个 大的正整数。例如:956506想转入到文件中如何写入呢?with open('test.bin',mode = 'wb+') as f:f.seek(0x4,0)f.write(struct.pack('i',956506))最终写入的结果是 i的 4字符内存占位方式 即 5E 98 0E 00 ,低16位在前,高16位在后956506转化为hex ...

weixin_39805906的博客 598

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[Python]_[初级]_[使用struct库对二进制文件进行读写]

场景 1.要分析或生成一个二进制文件时, Python使用 struct库来转换或分析二进制数据. 当然使用C++或者Java来分析也可以, 但对于脚本语言Python来说, 编写数据和调试时间都没Python快. 所以Python其实是比较正确的选择. 2.如果需要传输socket数据, 在定义好数据格式时自然也是使用stuct.pack和unpack来打包数据和分析数据. 说明 1...

小白 2919

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python 使用pickle及struct模块读写二进制文件

使用pickle的代码如下: import pickle i=13000000 a=99.056 s='中国人民123' lst=[[1,2,3],[4,5,6],[7,8,9]] tu=(-5,10,8) coll={4,5,6} dic={'a':'apple','b':'banana','g':'grape','o':'orange'} data=(i,a,s,lst,tu,coll,dic) print(data) # with open('sample_pickle.dat','wb') a.

格码老师教编程 1516

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python二进制文件读写——使用struct模块的pack/unpack方法

struct — Interpret bytes as packed binary data¶ Source code: Lib/struct.py This module performs conversions between Python values and C structs represented as Python bytes objects. This can be used in handling binary data stored in files or from network.

simple的博客 1669

使用Python进行二进制文件读写

<br />总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。<br />python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。<br /> <br />import struct<br />a=12.34<br />#将a变为二进制<br />bytes=struct.pack('i',a)<br /> <br />此时bytes就是一个string字符串,字符

lesky的专栏 2万+

python 二进制文件_使用Python进行二进制文件读写的简单方法(推荐)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39894914的博客 283

python二进制文件的读取与写入可以分别使用什么方法_使用Python进行二进制文件读写的简单方法...

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39804629的博客 1023

python打开二进制文件读写_使用Python进行二进制文件读写(转)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_27419879的博客 1134

python处理二进制文件_使用Python进行二进制文件读写的简单方法(推荐)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39817012的博客 416

python读取二进制文件_使用Python进行二进制文件读写的简单方法(推荐)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39842617的博客 336

python 二进制来进行_如何进行追加二进制文件 python

匿名用户1级2017-08-22 回答争议总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时...

weixin_39678426的博客 1948

python读取二进制文件_使用Python进行二进制文件读写(转)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39901571的博客 281

python读二进制文件博客园_使用Python进行二进制文件读写(转)

总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符...

weixin_39980360的博客 129
上一篇: NB-IoT APN相关知识
下一篇: wireshark文件pcap的格式
究理观心
博客等级 码龄10年 184粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值