将二进制文件中的字节顺序从一个平台转换为另一个平台
binconvert的Python项目详细描述
b转换
用于将二进制文件中的字节顺序从 平台到另一个。
介绍和动机
binconvert是出于作者的需要而产生的一个程序 读取在SPARC系统中以^ {EM1}$二进制ESE>格式写入的旧文件。 因为SPARC的本机字节顺序是大字节序。 首先是有效字节),这导致了在移植时的可编译性问题。 这些文件被转移到x86 linux机器上(它有little endian,或者 最低有效字节第一本机字节顺序)。在理想的世界里 其中二进制文件是unstructured并且存储在 文件类型相同,可以通过 用特殊的编译器标志重新编译程序或使用 一些现有的CLI解决方案,如^ {TT2}$。
不幸的是,有许多二进制文件是结构化的 文件中存储的变量具有不同的长度和类型,因此 有必要知道文件的内部结构 事先。幸运的是,python提供了一个易于使用的struct模块 它允许用户表示 数据作为格式字符串。例如,“F6S”表示前4个 文件中的字节表示一个浮点数,而其余的 6字节表示6个字符串。
尽管这比强迫用户 手动执行字节交换,当 需要处理结构更复杂的较大二进制文件。作为 例如,考虑一个名为a.bin的二进制文件,它表示 下表:
Name | Age(yr) | Weight(lb) | Height(ft) |
---|---|---|---|
Alex | 26 | 170.5 | 6.0 |
现在想象一下如果这个表有数百个额外的条目。格式 struct所需的字符串很容易变长。但是,我们 知道它可以泛化为header来标记每一列 在表中(“4S7S10S10S”),后跟表的实际条目 (“4si2f”),因此应该可以为 任意条目数。使用binconvert,甚至不知道 文件的总大小,我们可以很容易地转换 在x86计算机上,字节从大到小顺序使用:
bconv a.bin -f 4s7s10s10s 4si2f:#
总之,binconvert的主要目的是扩展功能 这些用例的pythonstruct模块,方法如下:
- 使为较大的文件生成格式字符串更容易。
- 提供一个简单的cli接口来执行endianness 转换。
安装和使用
要从当前代码库安装binconvert,可以使用
git clone https://github.com/agoodm/binconvert.git
cd binconvert
python setup.py install
如果一切顺利,您应该能够使用以下命令执行程序:
bconv -h
在不久的将来,使用^{tt10}的安装方法$ 将提供。