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

最近由于项目需要。需要对目标板的bin文件进行修改后使用。所以就想自己写一个上位机小工具来进行操作,结果在做的过程中遇到了一些意想之外问题(本人MFC不熟,C++水平有限也是一个原因),查看了一博客文档,也比较碎片化,我还是将我最后的阶段性成果整理 发布出来,供大家参考,希望能对某些人有所帮助。

下面就是mfc界面和按键触发的处理函数,界面比较简单,就一个文本框一个按键

“打开”按键按下所调用的方法

/*点击了界面中的打开按钮,选择对应的bin文件,并且以16进制显示出来*/
void CreadfilenewDlg::OnBnClickedBtnOpen()
{// TODO:  在此添加控件通知处理程序代码CFileDialog filedlg(true,NULL,NULL,                                                            /*文件打开窗口个*/OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,_T("bin文件(*.bin)|*.bin") );                      if (filedlg.DoModal() != IDOK                                                              )/*窗口不是按确定返回的*/{return;}CString filename, strtmp, strresult;filename = filedlg.GetPathName();                                                          /*获取要打开的文件名*/strresult += _T("你输入的文件的名字是:\r\n");strresult += filename;strresult += _T("\r\n");CFile readfile;                                                                              /*定义CFile结构*/readfile.Open(filename, CFile::modeReadWrite | CFile::typeBinary);                         /*以二进制读写形式打开文件*/UINT len,lenk;len = readfile.GetLength();                                                                  /*读取文件的长度*/strtmp.Format(_T("%d"), len);strresult += _T("你打开的文件的字节数是:\r\n");strresult += strtmp;strresult += _T("\r\n");lenk = len / 1024;                                                                          /*长度转换,修改为k字节为单位*/strtmp.Format(_T("%d"), lenk);strresult += _T("你打开的文件的大小是:\r\n");strresult += strtmp;strresult += _T("K\r\n");UCHAR *ucharbuffer = new UCHAR[len]();                                                       /*由file读到buffer、buffer类型为unsigned char*/readfile.Read(ucharbuffer, len);readfile.Close();strresult += _T("你打开的文件的内容是:\r\n");for (UINT i = 0; i < len; i++)                                                             /*将buffer内容转换为16进制的字符串*/{strtmp.Format(_T("%.2x"), ucharbuffer[i]);strtmp += _T(" ");                                                                     /*空格隔开相邻字节*/if ((i + 1) % 16 == 0)                                                                   /*每16个字节为一行*/{strtmp += _T("\r\n");}strresult += strtmp;}//static CFont pnt;                              /*设置为新宋体,是为了显示字符的对齐*///pnt.CreatePointFont(140, _T("宋体"));         /*移植到初始化方法BOOL CreadfilenewDlg::OnInitDialog()中,放在这会有重复打开报错*///GetDlgItem(IDC_EDITDISP)->SetFont(&pnt);SetDlgItemTextW(IDC_EDITDISP, strresult);                                                  /*显示出来*/    delete ucharbuffer;                                                                         /*释放空间*/
}

为了显示的16进制的时候能够列对齐,在初始化函数中所添加的代码

BOOL CreadfilenewDlg::OnInitDialog()
{CDialogEx::OnInitDialog();........// TODO:  在此添加额外的初始化代码static CFont pnt;                              /*设置为新宋体,是为了显示字符的对齐*/pnt.CreatePointFont(140, _T("宋体"));GetDlgItem(IDC_EDITDISP)->SetFont(&pnt);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

下面看下效果:

要打开的文件

用常用的UE阅读器打开后的内容显示

最后是我们所编写的上位机打开同一个文件的效果:

我检查过了,开头和结尾都对,中间内容没有一一核对,但应该也差不了,这个只是开始,后续我会继续添加相应的功能,如果大家有需要,我会将mfc工程打包挂出来

MFC读取bin文件并以16进制显示出来相关推荐

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

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

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

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

  3. Linux中如何将文件dump成16进制值

    http://www.cnblogs.com/bcxx_qin/archive/2009/05/06/1450596.html 在linux中有多种方式可以将文件dump成16进制显示,也可以将16进 ...

  4. MFC中将用户输入的表示16进制数的字符串转换成16进制数输出显示(包含1.wstring转成string的方法函数2.用boost库拆分字符串的函数3.字符转16进制数值的函数)

    前期准备: 1.电脑中安装好boost库,我的电脑中安装在C盘根目录下,如下图所示: 2.配置好boost环境变量,如下图所示: 3.开发环境VS2015,工程为MFC应用程序 需要的头文件如下: # ...

  5. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  6. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  7. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

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

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

  9. linux下的16进制编辑器,Linux下的16进制编辑器 Tweak

    Linux下的16进制编辑器 Tweak 发布时间:2012-08-02 15:28:29来源:红联作者:empast tweak是可以在命令行方式下使用的16进制编辑器,在Ubuntu Linux下 ...

最新文章

  1. 与交换机延迟相关的各种“秒”的单位
  2. c语言变量名必须用小写 常量用大写,day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...
  3. C/C++学习之路: C++对C的扩展
  4. 浅谈软件开发过程及项目管理
  5. DOS批处理高级教程:第七章 DOS批处理编程高级技巧(转)
  6. Perl语言必看书籍推荐
  7. 为什么都说阿里 P7 的晋升是道坎?
  8. 一串代码远程控制电脑关机
  9. 认真学习设计模式之适配器模式(Adapter Pattern)/包装器模式
  10. ionic3硬件检测、请求权限插件 Diagnostic 的用法
  11. 计算机网络(七)——互联网上的音频/视频服务 和 无线网络与移动网络
  12. 《Fundamentals of Computer Grahpics》虎书第三版翻译——第一章 介绍
  13. OpenCV实践小项目(二) -文档ocr扫描识别
  14. R语言之主成分回归与偏最小二乘xt8.3xt8.4
  15. 计算机组成原理实验:全加器实验
  16. Datawhale组队学习-NLP新闻文本分类-TASK06
  17. 软件设计师知识体系归纳总结
  18. 火爆全网送给女朋友的微信每日多次消息推送程序来了!多版本多平台!
  19. Anaconda创建虚拟环境及pytorch安装
  20. 微信小程序学习:动画实现幻灯片播放照片效果

热门文章

  1. matplotlib常见绘图函数
  2. 记一次服务器“挖矿“处理
  3. 数据库(DataBase,DB):关系型数据库 和 非关系型数据库
  4. SAP PP工艺路线主数据概念
  5. Java项目本地部署宝塔搭建实战华夏ERP系统vue源码
  6. Jumpstart Client安装日志
  7. CSS字体中英文名称对照表:如宋体对应SimSun
  8. 禁用wifi共享精灵、禁用wifi热点、win7禁用wifi
  9. 10-218 在订单表中查询运费的平均值
  10. dd命令生成随机大小的二进制文件