在win10中在处理.bin文件时,用普通的文本编辑器打开会乱码,故需将其转成16进制显示

1. 第一种方法(利用win10自带的Format-Hex工具)

win10同时按下win+R,输入powershell,进到powershell终端(不是cmd终端,powershell可以理解为是cmd终端的进阶版),输入命令Format-hex -Path ./xxx.bin即可
此方法不需要装任何软件,但有一个弊端,当.bin文件过大时,.bin文件不能在powershell终端完全显示

2. 第二种方法(利用python3处理.bin文件)

为了能将.bin文件显示完全,自己写了一个python处理程序,名称为 bin_to_hex.py ,运行该程序首先得在自己电脑上安装python3的运行环境,在cmd终端通过python bin_to_hex.py xxx.bin 128命令将.bin文件转成16进制字符显示的xxx.txt文件

# -*- coding:utf-8 -*-
import sys
import osfilepath = "HDCPTX_WVL1_HDMITX_3KEY.bin" #要处理的bin文件
show_number = 16 #每行显示的16进制字符数,默认为16if len(sys.argv) == 3: #读取输入参数filepath = sys.argv[1]show_number = int(sys.argv[2])print(filepath + " will be converted to HEX file!\n")binfile = open(filepath, 'rb')
hexfilepath = os.path.splitext(filepath)[0] + ".txt" #保留原文件名
hexfile = open(hexfilepath, 'w+')ch = binfile.read(1) #每次读取一个字节
i = 0 #总共要处理的字符数
count = 0 #每行的前缀地址while ch:'''这一版本直接显示16进制字符''''''data = hex(ord(ch))[2:] #ord转成ascii码的十进制,再通过hex转成16进制,通过[2:]去掉"0x"#print(data)txt_data = data.zfill(2) #前面补0i = i + 1if i % show_number == 1:hexfile.write("\n")count_str = hex(count)[2:]txt_count = count_str.zfill(6) #前面补0hexfile.write(txt_count) #前缀地址hexfile.write('   ')count = count + show_numberhexfile.write(txt_data)hexfile.write(' ')else:hexfile.write(txt_data)hexfile.write(' ')ch = binfile.read(1)''''''在每一行的后面增加显示ascll字符'''str_list = [] #该列表用于暂存每行要显示的字符count_str = hex(count)[2:] #通过hex转成16进制,通过[2:]去掉"0x"txt_count = count_str.zfill(6) #前面补0str_list.insert(0, txt_count+'   ') #前缀地址count = count + show_number #前缀地址更新str_list.insert(show_number, '   ') #16进制字符和ascii字符之间的空隙for i_list in range(show_number):if len(ch) != 0:data = hex(ord(ch))[2:] #ord转成ascii码的十进制,再通过hex转成16进制,通过[2:]去掉"0x"txt_data = data.zfill(2) #前面补0str_list.insert(1+i_list, txt_data+' ')int_ascii = ord(ch)if int_ascii < 65 or (int_ascii > 90 and int_ascii < 97) or int_ascii > 122: #只将字母打印出来,其他的打印空格int_ascii = 32str_list.insert(1+show_number+i_list+1, chr(int_ascii))ch = binfile.read(1)else:list_length = int((len(str_list)-2)/2)for i_list_left in range(show_number - list_length): #不足show_number时补空格str_list.insert(1+list_length+i_list_left, '   ')breakstr_list.append('\n')#print(str_list)for str_text in str_list: #将字符串list写入txt文件hexfile.write(str_text)print(hexfilepath + " is the HEX file!")binfile.close()
hexfile.close()

将bin文件以16进制字符显示相关推荐

  1. java读取文件 16进制_Java对文件的16进制读取和操作

    大家可以参考一下源代码的相关部分注释,然后写出自己的16进制处理程序. 有几个重点地方: 16进制字符串->10进制数          int input = Integer.parseInt ...

  2. C语言实现ASCII字符、压缩BCD码值与BIN码(16进制)互转 - (已编译,亲试可用)

    目录 1.将压缩BCD码转为BIN码 2.将压缩BCD码数组转为BIN码数组 3.将BIN码转为压缩BCD码 4.将BIN码数组转为压缩BCD码数组 5.将ASCII码转为BIN码 6.将ASCII码 ...

  3. 使用vim打开文件的16进制形式,编辑和全文替换

    1.先用vim打开文件的二进制形式,如果不以二进制可能会产生转换错误. vim -b file-to-open.dat 2.用xxd把文件转换成十六进制格式 :%!xxd 现在就可以对待普通文本一样查 ...

  4. 将图像转换为16进制文件

    在做图像处理时,有时需要将一张已有的图像写入到程序中.这时linux命令xxd可以完成这个需求. 注: win10可使用ubuntu子系统来使用linux命令,非常方便 xxd -i logo.bmp ...

  5. php 字符串转化为16进制,php将字符串转换成16进制的方法

    php将字符串转换成16进制的方法 本文实例讲述了php将字符串转换成16进制的方法.分享给大家供大家参考.具体分析如下: php中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2 ...

  6. xxd命令转换与回转16进制数据

    文章目录 命令帮助 测试文件内容 文件转为16进制格式 xxd命令不带参数转换(每组2个字节,hexdump格式) xxd命令不带参数转换(每组1个字节大写字母16进制,hexdump格式) 转为纯1 ...

  7. MFC读取bin文件并以16进制显示出来

    **MFC读取bin文件并以16进制显示出来** 最近由于项目需要.需要对目标板的bin文件进行修改后使用.所以就想自己写一个上位机小工具来进行操作,结果在做的过程中遇到了一些意想之外问题(本人MFC ...

  8. python定义16进制数组_python 文件转成16进制数组的实例

    如下所示: #! /usr/bin/python2 # coding=utf-8 import numpy import binascii if __name__=='__main__': #my_m ...

  9. 用Matlab把 .txt文件中的16进制数据转换成2进制数据

    问题描述 使用Matlab将.txt文本文件里面存放的16进制数据转换成2进制数据,放入一个新的.txt文件中.直接附代码解释,第一次发文章,仅为了练习使用和记录. clear; clc; fid = ...

  10. 16进制文件头笔记及文件类型判断代码

    之前做过一个功能,说是上传文件到服务器,但是所有文件excel.word.音乐.视频等都上传到一个文件夹,不利于查找,于是自己上网查询关于这方面的资料,决定按文件后缀名,给文件进行分类,存放不同的文件 ...

最新文章

  1. C#在DataTable中使用LINQ
  2. 2016年春季计算机应用基础,东北师范2016年春季《计算机应用基础》期末考核
  3. USTC English Club Note20171019(2)
  4. shm_overview(7)
  5. JAVA-配置path环境
  6. WebLogic11g 安装配置规范
  7. mac VMware fusion配置nat网络
  8. Loadrunner Error code : 9013.
  9. jdk1.8中的永久代和元空间
  10. Cortex-M3/M4(1)-处理器概述
  11. SAS 典型相关分析
  12. Waterfall Header Bidding机制
  13. 程序功能:输入一个长整数n,从高位开始逐位分离并输出。 例如输入123456
  14. 网页二维码生成器纯js代码带logo图纯前端合成
  15. 微信气泡主题设置_微信气泡主题怎么设置_微信气泡主题怎么设置方法_掌通手游...
  16. GNSS中多频观测值的组合形式
  17. 月入5万的程序员,日子过得就像月薪5000
  18. 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题
  19. 音视频开发学习(三) -- RGB YUV HSV 颜色空间
  20. 云服务器+ngrok搭建内网穿透服务(只有公网ip无域名)

热门文章

  1. MySQL(4)-----DML数据库操作(下)
  2. Spring源码解析目录
  3. 基于mybatis向oracle中插入数据的性能对比
  4. mysql数据库实操笔记20170418
  5. Uboot详细解析1
  6. 转 未能使用提供程序 RsaProtectedConfigurationProvider 进行解密 的解决办法
  7. 向数据库中的字段添加空值
  8. 边缘检测法之Roberts算子
  9. React.memo 是个啥么鬼?有什么用???
  10. 高斯金字塔与拉普拉斯金字塔的原理与python构建