位置: 编程技术 - 正文

Python实现Linux命令xxd -i功能(linux python gui)

编辑:rootadmin

推荐整理分享Python实现Linux命令xxd -i功能(linux python gui),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python操作linux命令行,linux中python命令,python linux执行命令,python linux执行命令,linux+python,python linux 命令,linux pythonide,python操作linux命令行,内容如对您有帮助,希望把文章链接给更多的朋友!

一. Linux xxd -i功能

Linux系统xxd命令使用二进制或十六进制格式显示文件内容。若未指定outfile参数,则将结果显示在终端屏幕上;否则输出到outfile中。详细的用法可参考linux命令xxd。

本文主要关注xxd命令-i选项。使用该选项可输出以inputfile为名的C语言数组定义。例如,执行echo > test和xxd -i test命令后,输出为:

可见,数组名即输入文件名(若有后缀名则点号替换为下划线)。注意,0x0a表示换行符LF,即'n'。

二. xxd -i常见用途

当设备没有文件系统或不支持动态内存管理时,有时会将二进制文件(如引导程序和固件)内容存储在C代码静态数组内。此时,借助xxd命令就可自动生成版本数组。举例如下:

1) 使用Linux命令xdd将二进制文件VdslBooter.bin转换为进制文件DslBooter.txt:

xxd -i < VdslBooter.bin > DslBooter.txt

其中,'-i'选项表示输出为C包含文件的风格(数组方式)。重定向符号'<'将VdslBooter.bin文件内容重定向到标准输入,该处理可剔除数组声明和长度变量定义,使输出仅包含进制数值。

2) 在C代码源文件内定义相应的静态数组:

编译源码时,DslBooter.txt文件的内容会自动展开到上述数组内。通过巧用#include预处理指令,可免去手工拷贝数组内容的麻烦。

三. 类xxd -i功能的Python实现

本节将使用Python2.7语言实现类似xxd -i的功能。

因为作者处于学习阶段,代码中存在许多写法不同但功能相同或相近的地方,旨在提供不同的语法参考,敬请谅解。

Python实现Linux命令xxd -i功能(linux python gui)

首先,请看一段短小却完整的程序(保存为xddi.py):

这段代码判断给定的字符串是否为C语言关键字。在Windows系统cmd命令提示符下输入E:PyTest>python xxdi.py,执行结果为True。

接下来的代码片段将省略头部的脚本和编码声明,以及尾部的'main'段。

生成C数组前,应确保数组名合法。C语言标识符只能由字母、数字和下划线组成,且不能以数字开头。此外,关键字不能用作标识符。所有,需要对非法字符做处理,其规则参见代码注释:

以print GenerateCArrayName('1a$if1#1_4.txt')执行时,入参字符串将被转换为__1a_if1_1_4_txt。类似地,_Bool被转换为_BOOL_。

为了尽可能模拟Linux命令风格,还需提供命令行选项和参数。解析模块选用optionparser,其用法详见python命令行解析。类xxd -i功能的命令行实现如下:

被注释掉的def ParseOption(...)原本是以下面的方式调用:

其意图是同时修改base、cols、strip等参数值。但这种写法非常别扭,改用缺省参数的函数定义方式,调用时只需要写ParseOption()即可。若读者知道更好的写法,望不吝赐教。

以-h选项调出命令提示,可见非常接近Linux风格:

基于上述练习,接着完成本文的重头戏:

Python2.5以下版本不支持with...as语法,而作者调试所用的Linux系统仅装有Python2.4.3。因此,要在Linux系统中运行xddi.py,只能写为file = open(...。但这需要处理文件的关闭和异常,详见理解Python中的with…as…语法。注意,Python2.5中使用with...as语法时需要声明from __future__ import with_statement。

可通过platform.python_version()获取Python版本号。例如:

经过Windows和Linux系统双重检验后,Xddi()工作基本符合预期。以ABCDEF.txt文件(内容为'ABCDEF')为例,测试结果如下:

再以稍大的二级制文件为例,执行 python xxdi.py VdslBooter.bin booter.c后,booter.c文件内容如下(截取首尾):

综上可见,作者实现的xxdi模块与Linux xxd -i功能非常接近,且各有优劣。xxdi优点在于对数组名合法性校验更充分(关键字检查),数组内容表现形式更丰富(8进制和进制);缺点在于不支持重定向,且数值宽度不固定(如0xb和0xff)。当然,这些缺点并不难消除。例如,用'0x%x'%val代替hex(val)即可控制输出位宽。只是,再加完善难免提高代码复杂度,也许会事倍功半。

以上所述是小编给大家介绍的Python实现Linux命令xxd -i功能,希望对大家以上帮助!

Python求算数平方根和约数的方法汇总 一、求算术平方根a=x=int(raw_input('Enteranumber:'))ifx=:whilea*ax:a=a+ifa*a!=x:printx,'isnotaperfectsquare'else:printaelse:printx,'isanegativenumber'二、求约数方法一:divisor=[]x=int(

Python装饰器基础详解 装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包

python迭代器与生成器详解 例子老规矩,先上一个代码:defadd(s,x):returns+xdefgen():foriinrange(4):yieldibase=gen()fornin[1,]:base=(add(i,n)foriinbase)printlist(base)这个东西输出可以脑补一下,结果

标签: linux python gui

本文链接地址:https://www.jiuchutong.com/biancheng/383390.html 转载请保留说明!

上一篇:基于Python实现一个简单的银行转账操作(用python做)

下一篇:Python求算数平方根和约数的方法汇总(python编程求一个数的平方)

  • 房开企业涉及哪些税种
  • 企业的净资产包括实收资本吗
  • 现金流量表抵消分录
  • 洗车费怎么做会计分录
  • 专用发票不抵扣怎么做账
  • 会计能开收据吗?
  • 应收账款包含应付款吗
  • 增值税的附加税率是多少
  • 企业所得税费用税率
  • 稿酬所得是否需要按照累计预扣税率
  • 银行付款退回重新开户
  • 人力资源外包服务规范
  • 金税三期申报代扣代缴增值税流程步骤分析
  • 预计退货会计英语
  • 兼营小规模纳税人增值税优惠
  • 差额征税可以享受1%
  • 当前中国有什么企业在国外
  • 0申报逾期罚款
  • 购买债券投资的交易费用
  • 财产转让所得个人所得税纳税地点
  • 委托加工白酒的计税依据
  • 未代扣代缴个税的滞纳金与处罚规定
  • 企业固定资产折旧费计入什么成本
  • 出口免抵退申报期限最新政策解读
  • 收购公司款项的支付是利好还是利差
  • 政府性基金收入来源三种
  • 应收账款保理会计处理 会计视野
  • 什么是商务接待与拜访
  • 逆流交易合并报表调整少数损益
  • php上传大文件失败
  • php 正则表达式
  • 保险支付方式有哪些
  • 资产减值准备为什么在贷方
  • 交易性金融资本
  • 个体户不建账怎样处罚
  • 递延所得税资产和负债怎么理解
  • laravel批量insert
  • 销售使用过的机器设备如何缴纳增值税
  • wordpress开发app
  • 大二期末要考试吗
  • 海关缴款书稽核比对
  • 公司购进软件的账务处理
  • 石油预付款发票怎么开
  • 学电脑的好网站
  • 多提的增值税该怎么做账
  • 长期股权投资资本公积增加记哪个会计科目
  • 出口报关单运费可以填0吗
  • 海外工作工资税收问题
  • 利润表中利息费用包括手续费吗
  • 以前年度损益调整怎么做账
  • 购入的固定资产,其入账价值包括的内容有
  • 所得税汇算清缴需要调增的项目
  • 公司给员工买房子如何做账
  • 记账凭证必须具备的基本内容
  • 企业应收账款的事前管理包括
  • Win7、WinXP下MySql安装出错完全卸载的方法步骤
  • mysql的全文索引的用处
  • 如何关闭系统快捷键
  • windows7休眠唤醒设置
  • ubuntu20.04安装配置
  • centos 环境变量
  • xp无法访问win7电脑
  • win10系统中断怎么解除
  • linux设置服务器ip地址
  • 微软发布更新的时间每月
  • win7 64位纯净版系统c盘空间显示与实际占用空间不对的解决方法图文教程
  • 铁嘴王指什么动物
  • 安卓游戏报告
  • css如何用
  • 源码分析怎么写
  • 在html中写入javascript
  • boostrapping
  • js数组操作的常用方法有哪些
  • 查验发票真伪
  • 广东etc扣费异常打哪个电话
  • 南京国民政府统治和开辟革命新道路
  • 递延所得税资产怎么计算
  • 无锡第三税务分局
  • 广西小学成绩查询入口官网
  • 关于个体户的个人所得税的最新政策法规
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设