将二进制文件中的字节顺序从一个平台转换为另一个平台

binconvert的Python项目详细描述


b转换

用于将二进制文件中的字节顺序从 平台到另一个。

介绍和动机

binconvert是出于作者的需要而产生的一个程序 读取在SPARC系统中以^ {EM1}$二进制ESE>格式写入的旧文件。 因为SPARC的本机字节顺序是大字节序。 首先是有效字节),这导致了在移植时的可编译性问题。 这些文件被转移到x86 linux机器上(它有little endian,或者 最低有效字节第一本机字节顺序)。在理想的世界里 其中二进制文件是unstructured并且存储在 文件类型相同,可以通过 用特殊的编译器标志重新编译程序或使用 一些现有的CLI解决方案,如^ {TT2}$。

不幸的是,有许多二进制文件是结构化的 文件中存储的变量具有不同的长度和类型,因此 有必要知道文件的内部结构 事先。幸运的是,python提供了一个易于使用的struct模块 它允许用户表示 数据作为格式字符串。例如,“F6S”表示前4个 文件中的字节表示一个浮点数,而其余的 6字节表示6个字符串。

尽管这比强迫用户 手动执行字节交换,当 需要处理结构更复杂的较大二进制文件。作为 例如,考虑一个名为a.bin的二进制文件,它表示 下表:

NameAge(yr)Weight(lb)Height(ft)
Alex26170.56.0

现在想象一下如果这个表有数百个额外的条目。格式 struct所需的字符串很容易变长。但是,我们 知道它可以泛化为header来标记每一列 在表中(“4S7S10S10S”),后跟表的实际条目 (“4si2f”),因此应该可以为 任意条目数。使用binconvert,甚至不知道 文件的总大小,我们可以很容易地转换 在x86计算机上,字节从大到小顺序使用:

bconv a.bin -f 4s7s10s10s 4si2f:#

总之,binconvert的主要目的是扩展功能 这些用例的pythonstruct模块,方法如下:

  1. 使为较大的文件生成格式字符串更容易。
  2. 提供一个简单的cli接口来执行endianness 转换。

安装和使用

要从当前代码库安装binconvert,可以使用

git clone https://github.com/agoodm/binconvert.git
cd binconvert
python setup.py install

如果一切顺利,您应该能够使用以下命令执行程序:

bconv -h

在不久的将来,使用^{tt10}的安装方法$ 将提供。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中扩展工厂方法模式中的类   在Java中,什么更适合于网络?UDP还是TCP?   java onJsAlert返回消息是对象而不是字符串   音频用Java调高/调低电脑音量?   java将JTextField添加到JOptionPane中:ShowOptionDialog   java合并对来自的行进行排序。txt文件   在Java库Android Studio 1.0.1中找不到本地路径   java如何从序列中删除最后一个数字?   netty简单Java api,用于形成和发送ntp数据包   java装饰器模式问题   Java复制数组引用   在SpringBootApplication类中使用服务的java抛出NullPointerException   在Struts 2中使用拦截器进行身份验证后的java登录重定向   java@SpringBootApplication ComponentScan在新的Eclipse项目中无法正常工作   如何从Android中的java代码中删除任何xml属性   java为什么我的JUnit错误收集器不报告错误?