
int DigitIpToStrIp(unsigned long ip, char *strip) { unsigned long temp; temp = ip << 8 * 3; unsigned int IP_first = temp >> 8 * 3; temp = ip << 8 * 2; unsigned int IP_second= temp >> 8 * 3; temp = ip << 8 * 1; unsigned int IP_thrid = temp >> 8 * 3; unsigned int IP_fourth=ip>> 8 * 3; sprintf(strip,"%d.%d.%d.%d",IP_first,IP_second,IP_thrid,IP_fourth ); return yes; } unsigned long StrIpToDigitIp(const char* Ip , size_t IPlen) { if (IPlen < 7) return -1; unsigned long ret; char copy_ip[15] = {0}; memcpy(©_ip , Ip , IPlen); unsigned short int token[4], tokenindex = 0 , count = 0; for (unsigned short int index = 0;index < IPlen; index++) { if (copy_ip[index] == '.') { copy_ip[index] = '\0'; token[3 - count] = atoi(©_ip[tokenindex]); tokenindex = index + 1; count ++; } } if (count != 3) return -1; token[0] = atoi(©_ip[tokenindex]); unsigned char temp[4]; memcpy(&temp[0] , &token[3] , sizeof(unsigned char)); memcpy(&temp[1] , &token[2] , sizeof(unsigned char)); memcpy(&temp[2] , &token[1] , sizeof(unsigned char)); memcpy(&temp[3] , &token[0] , sizeof(unsigned char)); memcpy(&ret , &temp[0] , sizeof(unsigned long )); return ret; } unsigned long strip_digip(char *ip,int iplen) { //192.168.52.11 unsigned long ret = 0; char temp_ip[16] = {0}; memcpy(temp_ip,ip,iplen); char *pos = temp_ip; int n = 0 , r = 0; char tmp_buf[8] = {0}; unsigned char tmp_num; unsigned char num_buf[4] = {0}; int num_idx = 0; while(1) { r = sscanf(pos,"%[^.].%n",tmp_buf,&n); if(r==1) { pos += n; tmp_num = atoi(tmp_buf); memcpy(&num_buf[num_idx],&tmp_num,1); num_idx++; } else break; } if(num_idx == 4) memcpy(&ret,num_buf,num_idx); return ret;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现