大端换小端 16位:

import struct
import sys # main body
if sys.argv.__len__() > 1:
# 参数获取
src_file = sys.argv[1]
else:
# 文本输入
src_file = input("Source Bin Path: ") dst_file = src_file[0:(src_file.__len__()-2)]
dst_i_file = dst_file
dst_file += "_le.bin"
dst_i_file += ".i"
print("Source file: {0}\nTarget File: {1}\n\t{2}".format(src_file, dst_file, dst_i_file)) sf = open(src_file, "rb")
df = open(dst_file, "wb")
dif = open(dst_i_file, "w") buf_tmp = [b'' for x in range(0, 2)]
contents = sf.read()
buf_size = contents.__len__()
extra_size = (buf_size % 2)
if extra_size > 0:
buf_size += (2 - extra_size)
contents = contents + b'' for i in range(0, buf_size, 2):
buf_tmp[1] = contents[i]
buf_tmp[0] = contents[i+1] if (i > 0) and ((i % 16) == 0):
dif.write("\n")
for j in range(0, 2):
dif.write(str.format("0x%02x," % buf_tmp[j])) # pack into bytes flow
tmp_bytes = struct.pack("2B", buf_tmp[0], buf_tmp[1])
df.write(tmp_bytes) dif.close()
sf.close()
df.close() print("Convert Completed!")

大端换小端 32位

import struct
import sys # main body
if sys.argv.__len__() > 1:
# 参数获取
src_file = sys.argv[1]
else:
# 文本输入
src_file = input("Source Bin Path: ") dst_file = src_file[0:(src_file.__len__()-4)]
dst_i_file = dst_file
dst_file += "_le.bin"
dst_i_file += ".i"
print("Source file: {0}\nTarget File: {1}\n\t{2}".format(src_file, dst_file, dst_i_file)) sf = open(src_file, "rb")
df = open(dst_file, "wb")
dif = open(dst_i_file, "w") buf_tmp = [b'' for x in range(0, 4)]
contents = sf.read()
buf_size = contents.__len__()
extra_size = (buf_size % 4)
if extra_size > 0:
buf_size += (4 - extra_size)
contents = contents + b'' for i in range(0, buf_size, 4):
buf_tmp[3] = contents[i]
buf_tmp[2] = contents[i+1]
buf_tmp[1] = contents[i+2]
buf_tmp[0] = contents[i+3] if (i > 0) and ((i % 16) == 0):
dif.write("\n")
for j in range(0, 4):
dif.write(str.format("0x%02x," % buf_tmp[j])) # pack into bytes flow
tmp_bytes = struct.pack("4B", buf_tmp[0], buf_tmp[1], buf_tmp[2], buf_tmp[3])
df.write(tmp_bytes) dif.close()
sf.close()
df.close() print("Convert Completed!")

python 工具 二进制文件处理之——大小端变换的更多相关文章

  1. python 工具 二进制文件处理之——去掉指定长度数据包头

    包头48bit 数据98464 ...如此循环: piece_size = 48 piece_size1 = 98464 with open("C:\\Users\\Administrato ...

  2. C语言 - 大小端问题

    目前使用的机器都是使用字节BYTE来存储的. 对于跨越多字节的对象,必须搞清楚两个规则: 这个对象的地址是什么 在存储器中如何按照这些字节的存放的书序 对于一个整型对象 a=0x12345678,一共 ...

  3. Java 大小端转换(基于ByteBuffer)

    大小端的基础知识: 小端( little-endian):低位字节在前,高位字节在后.大端( Big-Endian),则反之.具体而言,就是为了说清楚,CPU架构1 字(word)中byte的存储顺序 ...

  4. 【X86】---X86处理器大小端的数据存储验证

    之前也关注过大小端的存储,可能时间久了,加之又之前的电脑抽象换成了当前的处理器寄存器的值判断,导致自己总是有点蒙圈.看Spec手册的时候,有时会无法与手册中某个Bit的值与RU/RW工具读出来的对应上 ...

  5. ARM CPU大小端

    ARM CPU大小端: 大端模式:低位字节存在高地址上,高位字节存在低地址上 小端模式:高位字节存在高地址上,低位字节存在低地址上 STM32属于小端模式,简单的说,比如u32 temp=0X1234 ...

  6. C语言共用体、大小端、枚举

    1.共用体和结构体的相同和不同 (1)相同点就是操作语法几乎相同.(2)不同点是本质上的不同.struct是多个独立元素(内存空间)打包在一起:union是一个元素(内存空间)的多种不同解析方式. # ...

  7. 联合体union和大小端(big-endian、little-endian)

    1.联合体union的基本特性——和struct的同与不同 union,中文名“联合体.共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以 ...

  8. CPU的大小端模式

    不同体系结构的CPU,数据在内存中存放的排列顺序是不一样的. 存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大 ...

  9. C++/java之间的Socket通信大小端注意事项

    在一个物联往项目中,需要java云平台与一个客户端做socket定制协议的通信:然而在第一次测试时,并没有按照预想的那样完成解析.查找资料以后是因为客户端的数据读取方式为小端模式,而java默认采用大 ...

随机推荐

  1. Python之log的处理方式

    配置文件: #! /usr/bin/env python # -*- coding: utf-8 -*- """ logging配置 """ ...

  2. Python ORM

    本章内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句.如果 ...

  3. day04_01 知识回顾、算术运算符

    ","和"+"的区别 除法运算,整除//,别名"地板除" 取余数 2**10 2的10次方 指数运算 指数运算符优先级要比乘法要高,所以先算 ...

  4. Leetcode 466.统计重复个数

    统计重复个数 定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n].例如,["abc", 3]="abcabcabc". 另一方面,如果我们可 ...

  5. tornado中文教程

    http://docs.pythontab.com/tornado/introduction-to-tornado/ch2.html#ch2-1 python的各种库的中文教程 http://docs ...

  6. 九度oj 题目1470:调整方阵

    题目描述: 输入一个N(N<=10)阶方阵,按照如下方式调整方阵:1.将第一列中最大数所在的行与第一行对调.2.将第二列中从第二行到第N行最大数所在的行与第二行对调. 依此类推...N-1.将第 ...

  7. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) A. The King's Race

    http://codeforces.com/contest/1075/problem/A On a chessboard with a width of nn and a height of nn, ...

  8. HDU-1853 Cyclic Tour

    最小权值环覆盖问题:用几个环把所有点覆盖,求所选取的边最小的权值之和. 拆点思想+求最小转求最大+KM算法 #include <cstdlib> #include <cstdio&g ...

  9. BZOJ1068 [SCOI2007]压缩 【区间dp】

    题目 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小 写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位 ...

  10. 刷题总结——book of evil(codefoeces 337D)

    题目: description Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This ar ...