C++ 16进制日志输出 每行右侧ASII输出

头文件

void logbuffer(unsigned char *buff, int len, int iclm = 16);

cpp文件

void logbuffer(unsigned char *buff,int len,int iclm )
{static const int clm = iclm; //每行被打印成16进制的字符数   只修改这一行就可以改变每行打印的字符数量static const int linelen = clm * 3 + clm + 1;//每行的字符总数char *Xbuffer = new char[(len/clm+1)*linelen];memset(Xbuffer,0, (len / clm + 1)*linelen);sprintf(Xbuffer, "\r\n");int linenum = 0;for (size_t i = 0; i < len; i++){if (0 == (i+1)%clm ) {sprintf(Xbuffer + 3 * i+ 1 + linenum * (clm+1)  , "%02X ", *(buff + i));for (size_t j = 0; j < clm; j++){if ( isgraph(*(buff + i - clm+1 + j)) /*|| ispunct(*(buff + i - 15 + i))*/ ){*(Xbuffer + 3 * i + 1 + linenum * (clm + 1) + j+3) = *(buff + i - clm+1 + j);}else {*(Xbuffer + 3 * i + 1 + linenum * (clm + 1) + j+3) = '.';}}linenum++;*(Xbuffer + 3 * i + 1 + (clm + 1)*linenum+3-1) = '\n';}else {sprintf(Xbuffer + 3 * i+1+linenum* (clm + 1), "%02X ", *(buff + i));}}//最后一行处理if (0 != len % clm ) {for (size_t i = len % clm; i < clm; i++){sprintf(Xbuffer + 1 + linenum * linelen+3*(i), "   ");}for (size_t i = 0; i < len % clm; i++){if ( isgraph(*(buff + clm * linenum + i))/*|| ispunct(*(buff + 16 * linenum + i))*/ ){*(Xbuffer + 1 + linenum * linelen + clm * 3 + i) = *(buff + clm * linenum + i);}else{*(Xbuffer + 1 + linenum * linelen + clm * 3 + i) = '.';}}}//LOG(DEBUG) <<Xbuffer;delete[]Xbuffer;
}

//原创。转载请标明引用:https://www.cnblogs.com/liuguoyao514257665/p/9863837.html

原创。转载请标明引用:https://www.cnblogs.com/liuguoyao514257665/p/9863837.html

posted on 2018-10-27 22:58 lgy514 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/liuguoyao514257665/p/9863837.html

C++ 16进制日志输出 每行右侧ASII输出相关推荐

  1. 用vi在linux下查看16进制文件

    在vi的命令状态下 : :%!xxd --将当前文本转换为16进制格式. :%!od --将当前文本转换为16进制格式. :%!xxd -c 12--将当前文本转换为16进制格式,并每行显示12个字节 ...

  2. c语言中的16进制坐标计算器,十六进制计算器_16进制计算器

    16进制计算器 开始--所有程序--附件--计算器 电脑计算器16进制转换10进制怎么用 在电脑自带的计算器中启用"程序员"设置,即可进行16进制转换10进制的操作.具体操作请参照 ...

  3. Python进制转换的完全实现——2/10/16进制原/补码互转

    一.需要转换的几种情况 不带符号位的整数 2进制 10进制 16进制 2进制 – bin2dec() bin2hex() 10进制 dec2bin() – dec2hex() 16进制 hex2bin ...

  4. python将图片转十六进制_如何使用python将16进制字符串还原为PNG图片?

    各位,我这里有一个png图片的16进制的字符串,如何用python输出为png位图? thanks 89504e470d0a1a0a0000000d49484452000000320000007b08 ...

  5. python 字符串转16进制

    方法一:先通过ord()把字符转成ascii码的十进制,再通过hex()转成16进制,通过[2:]去掉"0x" s="aasdajoijlsknhv" s_he ...

  6. 【python初级】10进制与2进制8进制16进制的转换

    [python初级]10进制与2进制8进制16进制的转换 背景 代码 背景 在做串口通信的时候发送的字符串都是16进制编码的. 本博客就介绍10进制与2.8.16进制的相互转换. 10进制是我们生活中 ...

  7. C语言 输入输出1(8进制与16进制)

    撰写人--软工二班_陈喜平 题目描述 编写程序,输入一个正整数n,输出n的8进制与16进制形式. 输入 整数n. 输出 n的8进制与16进制形式(2个数据之间用1个空格分开),输出后换行. 样例输入 ...

  8. python如何输出16进制_python 以16进制打印输出的方法

    python 以16进制打印输出的方法 打印整数16进制 num=10 print('%#x'%num) 打印字符串中的16进制 arr='12342535' for i in arr: print( ...

  9. 面试题--位操作--将十进制数转换为16进制字符串输出

    这是一道面试题: 编程实现将十进制数转换为16进制输出,不得使用任何已定义的库函数,比如string,math等. char * get16String(long num) { int i = 0; ...

最新文章

  1. docker安装kafka消息队列
  2. SMS系列之六:利用SMS实现操作系统的补丁分发
  3. 我为什么最终放弃了 Linux 桌面版的研发
  4. Alternative PHP Cache ( APC )
  5. java怎么把随机数放入数组_Java学习:集合的使用与数组的区别
  6. flink sql是否支持emit策略
  7. 单片机IO引脚驱动能力的提高
  8. c语言结构体编程,[编程] C语言的结构体详解
  9. 开源HTML5应用开发框架 - iio Engine
  10. C语言求正弦的泰勒展开,用泰勒公式求sin(x)的近似值
  11. 随想录(推荐『步步惊芯 - 软核处理器内部设计分析』这本书)
  12. ionic 刷新页面的几种方法
  13. 如何把握好 transition 和 animation 的时序,创作描边按钮特效...
  14. bulk insert java_java oracle bulk insert
  15. java小说网站源码_基于java的小说网站代码(全)
  16. Using SVN with Ant
  17. 通俗易懂解释什么是“中台”
  18. SpringBoot整合Redis_Jedis版(二十)
  19. 计算机2.0培训心得,信息技术2.0心得体会
  20. 深入windows的关机消息截获-从XP到Win7的变化

热门文章

  1. 大数据工程师和数据分析师有什么区别
  2. CANopen协议本质
  3. Form表单验证神器: BootstrapValidator常见的坑,input框的value值改变二次验证不了?
  4. airvideo_如何免费获取Android中的AirVideo功能
  5. 2022年化工自动化控制仪表考试总结及化工自动化控制仪表模拟考试
  6. 《剑指Offer》51. 二叉搜索树的第k个结点
  7. Graphics2D 详细应用秘籍
  8. 谈《西游记》和泛项目
  9. pixel-anchor 相关概念
  10. NCCL (NVIDIA Collective Communications Library)