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
转载于:https://www.cnblogs.com/liuguoyao514257665/p/9863837.html
C++ 16进制日志输出 每行右侧ASII输出相关推荐
- 用vi在linux下查看16进制文件
在vi的命令状态下 : :%!xxd --将当前文本转换为16进制格式. :%!od --将当前文本转换为16进制格式. :%!xxd -c 12--将当前文本转换为16进制格式,并每行显示12个字节 ...
- c语言中的16进制坐标计算器,十六进制计算器_16进制计算器
16进制计算器 开始--所有程序--附件--计算器 电脑计算器16进制转换10进制怎么用 在电脑自带的计算器中启用"程序员"设置,即可进行16进制转换10进制的操作.具体操作请参照 ...
- Python进制转换的完全实现——2/10/16进制原/补码互转
一.需要转换的几种情况 不带符号位的整数 2进制 10进制 16进制 2进制 – bin2dec() bin2hex() 10进制 dec2bin() – dec2hex() 16进制 hex2bin ...
- python将图片转十六进制_如何使用python将16进制字符串还原为PNG图片?
各位,我这里有一个png图片的16进制的字符串,如何用python输出为png位图? thanks 89504e470d0a1a0a0000000d49484452000000320000007b08 ...
- python 字符串转16进制
方法一:先通过ord()把字符转成ascii码的十进制,再通过hex()转成16进制,通过[2:]去掉"0x" s="aasdajoijlsknhv" s_he ...
- 【python初级】10进制与2进制8进制16进制的转换
[python初级]10进制与2进制8进制16进制的转换 背景 代码 背景 在做串口通信的时候发送的字符串都是16进制编码的. 本博客就介绍10进制与2.8.16进制的相互转换. 10进制是我们生活中 ...
- C语言 输入输出1(8进制与16进制)
撰写人--软工二班_陈喜平 题目描述 编写程序,输入一个正整数n,输出n的8进制与16进制形式. 输入 整数n. 输出 n的8进制与16进制形式(2个数据之间用1个空格分开),输出后换行. 样例输入 ...
- python如何输出16进制_python 以16进制打印输出的方法
python 以16进制打印输出的方法 打印整数16进制 num=10 print('%#x'%num) 打印字符串中的16进制 arr='12342535' for i in arr: print( ...
- 面试题--位操作--将十进制数转换为16进制字符串输出
这是一道面试题: 编程实现将十进制数转换为16进制输出,不得使用任何已定义的库函数,比如string,math等. char * get16String(long num) { int i = 0; ...
最新文章
- docker安装kafka消息队列
- SMS系列之六:利用SMS实现操作系统的补丁分发
- 我为什么最终放弃了 Linux 桌面版的研发
- Alternative PHP Cache ( APC )
- java怎么把随机数放入数组_Java学习:集合的使用与数组的区别
- flink sql是否支持emit策略
- 单片机IO引脚驱动能力的提高
- c语言结构体编程,[编程] C语言的结构体详解
- 开源HTML5应用开发框架 - iio Engine
- C语言求正弦的泰勒展开,用泰勒公式求sin(x)的近似值
- 随想录(推荐『步步惊芯 - 软核处理器内部设计分析』这本书)
- ionic 刷新页面的几种方法
- 如何把握好 transition 和 animation 的时序,创作描边按钮特效...
- bulk insert java_java oracle bulk insert
- java小说网站源码_基于java的小说网站代码(全)
- Using SVN with Ant
- 通俗易懂解释什么是“中台”
- SpringBoot整合Redis_Jedis版(二十)
- 计算机2.0培训心得,信息技术2.0心得体会
- 深入windows的关机消息截获-从XP到Win7的变化