c_cpp 将IP地址转换为整数并将其转换回c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将IP地址转换为整数并将其转换回c相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
union
{
    unsigned int integer;
    unsigned char byte[4];
} itoch;

main(){
	printf("Converting IP: 32.0.45.54\n");
	//--------- convert to int---------------------
	unsigned int a=stohi("32.0.45.54");
	printf("Integer value: %d\n",a);
	//--------- convert to char[]---------------------
	itoch.integer = a;
    	printf("char[] values: %u %u %u %u\n", itoch.byte[0], itoch.byte[1], itoch.byte[2], itoch.byte[3]);
}

int stohi(char *ip){
	char c;
	c = *ip;
	unsigned int integer;
	int val;
	int i,j=0;
	for (j=0;j<4;j++) {
		if (!isdigit(c)){  //first char is 0
			return (0);
		}
		val=0;
		for (i=0;i<3;i++) {
			if (isdigit(c)) {
				val = (val * 10) + (c - '0');
				c = *++ip;
			} else
				break;
		}
		if(val<0 || val>255){
			return (0);	
		}	
		if (c == '.') {
			integer=(integer<<8) | val;
			c = *++ip;
		} 
		else if(j==3 && c == '\0'){
			integer=(integer<<8) | val;
			break;
		}
			
	}
	if(c != '\0'){
		return (0);	
	}
	return (htonl(integer));
}

以上是关于c_cpp 将IP地址转换为整数并将其转换回c的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 给定罗马数字,将其转换为整数,反之亦然。

c_cpp 将字符转换为整数

将多个整数列读取为字符串,尝试 gsub 并转换回整数

c_cpp 将整数转换为另一个基数

将 INT_MAX 转换为浮点数,然后再转换回整数。

将 datetime 转换为 Unix 时间戳并将其转换回 python