c语言 hex转str 函数_int printf(const char)

c语言 hex转str 函数_int printf(const char)voidhexDump(constchar*buf,intlen){ if(len<1||buf==NULL)return; constchar*hexChars="0123456789ABCDEF"; inti=0; charc=0x00; charstr_print_able[17]; charstr_hex_buffe…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

void hexDump(const char* buf, int len)
{
	if (len < 1 || buf == NULL) return;

	const char *hexChars = "0123456789ABCDEF";
	int i = 0;
	char c = 0x00;
	char str_print_able[17];
	char str_hex_buffer[16 * 3 + 1];

	for (i = 0; i < (len / 16) * 16; i += 16)
	{
		int j = 0;
		for (j = 0; j < 16; j++)
		{
			c = buf[i + j];

			// hex
			int z = j * 3;
			str_hex_buffer[z++] = hexChars[(c >> 4) & 0x0F];
			str_hex_buffer[z++] = hexChars[c & 0x0F];
			str_hex_buffer[z++] = (j < 10 && !((j + 1) % 8)) ? '_' : ' ';

			// string with space repalced
			if (c < 32 || c == '\0' || c == '\t' || c == '\r' || c == '\n' || c == '\b')
				str_print_able[j] = '.';
			else
				str_print_able[j] = c;
		}
		str_hex_buffer[16 * 3] = 0x00;
		str_print_able[j] = 0x00;

		printf("%04x  %s %s\n", i, str_hex_buffer, str_print_able);
	}

	// 处理剩下的不够16字节长度的部分
	int leftSize = len % 16;
	if (leftSize < 1) return;
	int j = 0;
	int pos = i;
	for (; i < len; i++)
	{
		c = buf[i];

		// hex
		int z = j * 3;
		str_hex_buffer[z++] = hexChars[(c >> 4) & 0x0F];
		str_hex_buffer[z++] = hexChars[c & 0x0F];
		str_hex_buffer[z++] = ' ';

		// string with space repalced
		if (c < 32 || c == '\0' || c == '\t' || c == '\r' || c == '\n' || c == '\b')
			str_print_able[j] = '.';
		else
			str_print_able[j] = c;
		j++;
	}
	str_hex_buffer[leftSize * 3] = 0x00;
	str_print_able[j] = 0x00;

	for (j = leftSize; j < 16; j++)
	{
		int z = j * 3;
		str_hex_buffer[z++] = ' ';
		str_hex_buffer[z++] = ' ';
		str_hex_buffer[z++] = ' ';
	}
	str_hex_buffer[16 * 3] = 0x00;
	printf("%04x  %s %s\n", pos, str_hex_buffer, str_print_able);
}

c语言 hex转str 函数_int printf(const char)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190890.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm快捷键设置在哪里_手机快捷键在哪里设置

    pycharm快捷键设置在哪里_手机快捷键在哪里设置Alt+Enter自动添加包shift+O自动建议代码补全Ctrl+tSVN更新Ctrl+kSVN提交Ctrl+/注释(取消注释)选择的行Ctrl+Shift+F高级查找Ctrl+Enter补全Shift+Enter开始新行TABShift+TAB缩进/取消缩进所选择的行Ctrl+Alt+I自动缩进行Ctrl+Y删除

    2022年8月28日
  • 使用SQL游标进行循环插入数据「建议收藏」

    使用SQL游标进行循环插入数据「建议收藏」使用SQL游标进行循环插入数据–给新建页面添加权限控制declare@RoleIDvarchar(50)declare@Opratorvarchar(50)DECLAREAutoInsertRowCURSORFORSELECTdistinctRoleID,OperatorFROMeOPENAutoInsertRow;FETCHNEXTFROM

    2022年7月14日
  • 完美者常用软件光盘2008

    完美者常用软件光盘2008下载地址:http://down.wmzhe.com/html/view-9663.htm1.JPG(45.22KB)2007-12-2719:102.JPG(49.8KB)2007-12-2719:103.JPG(44.11KB)2007-12-2719:1044.JPG(55.81KB)2007-1

    2022年7月26日
  • docker 视频网站_springboot前后端分离

    docker 视频网站_springboot前后端分离摘要随着计算机应用技术和网络技术的日新月异,宽带视频点播技术因良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业青睐。这里结合平台开发实例,阐述了基于WEB的在线视频点播网站的软件结构和设计实现。本视频点播系统实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。由于本系统是一个小型系统,所以我们采用基本的MySQL数据库,易于实现。具体实现中将vue及springboot完美融合,力求界面美观、操作流畅。本文主要论述服务器端视频服务平台的搭建、管理功能的具体实现,以及图形用

    2022年8月21日
  • 智能小车设计思路简述

    智能小车设计思路简述简单的说就是把微控制器(单片机)的管脚和外设的引脚用杜邦线相连,就可以使用微控制器通过自身管脚给外设发送信号,以实现外设的运行。能力较强的可以自己设计一块电路板,把微控制器和一部分外设直接插在板子上面的排座上,减少杜邦线的使用(使用杜邦线太多会比较乱),还可以在板子上设计一些必要的电路如稳压电路、按键电路、电机驱动电路,这些电路网上也能买到。其实小车后期前进后退、循迹、避障的功能是否顺滑,大部分取决于代码的编写,有的时候还需要在代码中加入算法。智能小车的设计主要包含两部分,硬件部分和软件部分。……

    2022年10月9日
  • pytest fixtures_pytest allure

    pytest fixtures_pytest allurefixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号