BIN转HEX详解
来源:互联网 发布:松竹歌舞伎 知乎 编辑:程序博客网 时间:2024/05/22 07:42
一、准备
1.bin文件和hex文件
bin文件即二进制文件,区别于.mp3 .avi .pdf等格式的文件,以.bin后缀结尾,内容是二进制信息(非文本文件,即内容不是ascii码)
hex文件即intel hex格式的文本文件,以十六进制表示,具有地址信息,可烧录进mcu。
2.工具
linux编程环境、nodepad++
二、hex文件格式
:aabbbbcc[xx.........]dd
aa 标明xx.......的长度
bbbb 偏移地址,完整地址低16位
cc 此条数据的类型
'00' Data Record
'01' End of File Record
'02' Extended Segment Address Record
'03' Start Segment Address Record
'04' Extended Linear Address Record
'05' Start Linear Address Record
xx...... 数据
dd 此条数据的校验和(求和、模256、补码)
1.地址信息
hex文件需要在每一块sector的开始处写上地址信息,此信息可供烧录工具查找并烧录到相应地址。
如烧写到0x08000000
需要写入:
020000040800f2
02表明数据部分长度为2个字节(0x0800)
0000表明偏移地址是0x0000
04表示后面跟着的数据是基地址
0800表示基地址是0x0800
f2表示校验和( 求和:02+00+00+04+08+00=0x0e, 模256:0x0e%256 = 0x0e, 补码:0x100-0x0e = 0xf2 )
2.数据信息
hex的数据格式可以16个数据为一行,也可以32个数据为一行
因为每个sector开始时都需要写上地址信息,假设sector size为 2048字节 ,则每隔 128 (2048/16)行需要写上地址信息
hex文件的数据可以不写满一个sector块
hex文件的数据可以地址不连续,比如第一个块由地址信息给出地址0x08000000,第二个块可以指定从0x08003000开始。地址可以不连续,但新的sector必须有地址信息
3.结束信息
在文件的最后写上结束信息表示结束,结束信息内容固定不变,
为:
:00000001FF
三、bin转hex
知道了bin和hex的区别,转换就有思路了
1.hex文件开头写入地址信息,表示接下来的一块新sector需要烧写到flash的哪一个地址
020000040800f2
2.读取一行bin数据,并把数据转为ascii码(比如第一个数据1,需要转为字符‘1’)
一行bin数据 : 40 11 00 20 99 37 00 08 53 20 00 08 55 20 00 08
一行hex数据(十六进制显示) :0d 0a 3a 31 30 30 30 31 30 30 30 35 37 32 30 30 30 30 38 35 39 32 30 30 30 30 38 35 42 32 30 30 30 30 38 30 30 30 30 30 30 30 30
一行hex数据(文本格式显示) :40110020993700085320000855200008
3.添加此行的hex信息
:10000000 40110020993700085320000855200008 AF
按照此思路可轻松完成bin到hex格式的转换
- BIN转HEX详解
- BIN转HEX
- elf、hex转bin
- Hex文件转Bin文件
- Hex文件转Bin文件
- hex格式转bin格式
- HEX转BIN文件总结
- Hex文件转Bin文件
- fromelf.exe hex转bin
- C# Hex文件转Bin文件
- elf、bin、hex文件互转
- bin文件和hex文件互转
- 分享bin转hex小工具 BinToHex
- hex和bin文件格式
- HEX和BIN文件格式
- HEX与BIN转换
- HEX转换bin心得
- convert Hex to Bin
- 理解矩阵特征值及应用
- 一枚Android "短信小偷" 病毒的分析
- shell脚本中echo显示内容带颜色
- android读写文件的实现(针对android4.4不能在sdcard根目录下创建文件夹)
- Android layer type与WebView白屏以及WebView不随动画而动的问题
- BIN转HEX详解
- eclipse,tomcat不能部署项目,提示Project facet Java version 1.8 is not supported
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- android自定义的notification
- 基于 <tx> 命名空间的声明式事务管理
- 92 js 根据li里面a标签href属性来匹配当前url
- Happy Number 数组变换循环判断
- Android上玩玩Hook:Cydia Substrate实战
- 浮动窗体 点击鼠标就出错