【C语言】字符串转为十六进制(str_to_hex)

近日在开发过程中,遇到一个问题。将字符串转为十六进制,利用snprintf转换str的格式。

下面贴上代码实现。

#include <stdio.h>


void test_printf5(char *str,int length)
{
	int iii;
	printf("the str is:");
	for(iii= 0;iii <length;iii++)
	{
		printf("%02x ",str[iii]);
	}
	printf("\n");
}	
	/*str to hex,
	字符串转换为16进制
	利用snprintf 函数
	int snprintf(char* dest_str,size_t size,const char* format,...);
	功能:将可变参数以format的格式转换到dest_str中,并可以用%s打印出来。 
	1、dest_str:目标字符串,即输出字符串
	2、size: 转换字符控制长度。 
	(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
	(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。
	3、format :转换为某个格式,例如:%2d,%04X,%02X。 
	4、...:需要转换的字符串 
	*/
int str_to_hex(char *out_string,int length,char *in_string)	
{
	int index;
	char *fmt = "%02x";
	
	for(index = 0;index < length;index++)
	{
		snprintf((char *)&out_string[index<<1],3,fmt,in_string[index]);
	}
	return (length<<1);	
} 
int main(){
	
	/*test snprintf*/ 
	
	char string[20] = {0};
	int size = 0;
	char *in_string = "asfawwer888";
	
	size = str_to_hex(string,sizeof(in_string),in_string);
	printf("the size is %d\n",size);
	printf("string is %s\n",string);
	test_printf5(string,20);

}


  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值