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)

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 3极管工作原理_通信终端工作原理

    3极管工作原理_通信终端工作原理一、很多初学者都会认为三极管是两个PN结的简单凑合(如图1)。这种想法是错误的,两个二极管的组合不能形成一个三极管。我们以NPN型三极管为例(见图2),两个PN结共用了一个P区——基区,基区做得极薄,只有几微米到几十微米,正是靠着它把两个PN结有机地结合成一个不可分割的整体,它们之间存在着相互联系和相互影响,使三极管完全不同于两个单独的PN结的特性。三极管在外加电压

  • python 正则表达式详解

    python 正则表达式详解正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能

  • MySQL 分库分表,写得太好了!

    https://www.toutiao.com/a6603492496779510276/?tt_from=mobile_qq&amp;utm_campaign=client_share&amp;timestamp=1549497188&amp;app=news_article&amp;utm_source=mobile_qq&amp;iid=59568063679&amp;utm_medium=…

  • MacBook Pro最全快捷键指南——高效型选手必备

    MacBook Pro最全快捷键指南——高效型选手必备剪切、拷贝、粘贴和其他常用快捷键Command-X:剪切所选项并拷贝到剪贴板。Command-C:将所选项拷贝到剪贴板。Command-V:将剪贴板的内容粘贴到当前文稿或应用中。Command-Z:撤销前一个命令。随后您可以按Command-Shift-Z来重做,从而反向执行撤销命令。Command-A:全选各项。Command-F:查找文稿中的项目或打开“查找”窗…

  • java游戏激活成功教程版盒子,37游戏盒子-37游戏盒子最新版 v4.0.0.4 官方版[通俗易懂]

    java游戏激活成功教程版盒子,37游戏盒子-37游戏盒子最新版 v4.0.0.4 官方版[通俗易懂]37游戏盒子37游戏盒子最新版是一款提供游戏下载辅助软件。37游戏盒子最新版内置海量游戏而且不断更新,让玩家不必到处找游戏。而且还会自动去检测游戏所需要的软件和硬件环境,玩家只需轻松一点,就可以实现游戏的下载、安装、运行全部过程。37游戏盒子最新版特色说明:1、内置海量游戏,不断更新,不必到处找游戏。2、只需轻松一点,实现游戏的下载、安装、运行,减少用户麻烦,节省玩家时间。3、斥资千万,全新搭建智…

发表回复

您的电子邮箱地址不会被公开。

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