python 二进制文件转文本工具

时间:2025-02-17 13:07:03

转自:/

import tkinter as tk
from tkinter import ttk
import 
import threading
import os

#选择文件按钮的处理
def selectFile():
    (text="", wraplength=600)
    selectfile = ()
    if selectfile != '':
        s_entry.delete(0,)
        s_entry.insert(0,selectfile)

    src_file=s_entry.get()
    if src_file != '':
        target_file=src_file+".txt"
        t_entry.delete(0, )
        t_entry.insert(0,target_file)
        convert_button.configure(state="enable")
    else:
        t_entry.delete(0, )
        convert_button.configure(state="disabled")


def bin2hextext(srcfile,targetfile):
#二进制文件srcfile 转换成文本文件 targetfile,16进制显示,带偏移
    i=1
    try:
        fsrc=open(srcfile,mode='rb')
        ftarget= open(targetfile, mode='w')
        iBytes = ()
        print("%08x:" % 0, file=ftarget, end='')
        for s_byte in iBytes:
            print("%02x" % s_byte,file = ftarget,end='')

            if i%16 == 0:
                print("" , file=ftarget)
                print("%08x:" % i, file=ftarget,end='')
            #刷新文件缓存 显示进度
            if i%(128*1024) == 0:
                status = ('%.2f%%' % ((i/((srcfile)) * 100)) )
                ()
                (text=status)
            i += 1
        ()
        ()
        return "Convert file successfully"
    except (OSError,TypeError) as reason:
        return "Error"+str(reason)

#创建线程进行处理 防止界面卡死
def convert_thread_func(src,target):
    res = bin2hextext(src, target)
    (text=res, wraplength=600)
    convert_button.configure(state="enable")

#转换按键的处理
def convert_func():
    convert_button.configure(state="disabled")
    (text="Processing ... ", wraplength=600)
    sf = s_entry.get()
    tf = t_entry.get()
    t=(target=convert_thread_func,args=(sf,tf))
    ()


root=()
("bin2text V0.1 by: deep_pro") #第一个版本 2018-10-04
(root,text="source file:").grid(row=0,column=0)
(root,text="target file:").grid(row=1,column=0)
(root,text=" result :").grid(row=2,column=0)
resultlabel=(root,fg="red",text=" ")
(row=2,column=1)
s_entry=(width=99)
t_entry=(width=99)
s_entry.grid(row=0,column=1)
t_entry.grid(row=1,column=1)

(root,text=" ").grid(row=0,column=2)
(root,text=" ").grid(row=1,column=2)
src_button=(root,text="open",width=8,command = selectFile).grid(row=0,column=3)
convert_button=(root,text="convert",width=8,state="disabled",command=convert_func)
convert_button.grid(row=1,column=3)

()

#打包
#pyinstaller -F  --noconsole -i  

ps:写博客的都用的是chrome么,microsoft edge体验极差!!!