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

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使用时参数和对应类型的字节数需要对应,否则将会出现运行错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值