uint32_t转换成IP字符串

本文记录了在艺龙面试中遇到的一道题目,即如何将一个uint32_t类型的整数转换为IP地址字符串。通过解析每个八位段并处理不同情况,例如零填充和省略前导零,实现这一转换。提供的代码测试用例包括从0x0到0xFFFFFFFF以及一些随机数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天去艺龙面试,面试的时候的一个面试题,题目是给一个uint32_t的一个整数,转换成IP字符串

 

大概思路是对的,每次取8位进行处理,然后字符串内加入一个'.',最后再用'\0'代替最后一个'.'

然后8位数字0-255,当然012这种0是不展现的,最后000的情况还需要补0,当时在纸上写的时候0处理得不够好,回来以后想了想,设一个flag标志表示是否前面已经有大于0的数,有的话'0' 就加入字符串,没有的话省略,最后如果flag没有被重置的话就补一个'0'。

大概思路就是这样,下面附上代码

测试用例用了0x0->0.0.0.0、0xFFFFFFFF->255.255.255.255

然后一些比较随机和综合的数0x0x64646464->100.100.100.100、0x66164E00->102.22.78.64

 

char* changeIP(uint32_t num){
	
	char *res=new char[16];
	char *p=res;
	for (int i=0;i<4;i++)
	{
		uint32_t tmp=(num>>((3-i)*8))&0xFF	 ;
		p=make8Bit(p,tmp);
	}
	p--;
	*p='\0';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值