嗨,我正在尝试将 4 个整数连接为一个整数。我使用了在这里找到的连接函数:
https://stackoverflow.com/a/12700533/2016977
我的代码:
unsigned concatenate(unsigned x, unsigned y) {
unsigned pow = 10;
while(y >= pow)
pow *= 10;
return x * pow + y;
}
void stringtoint(){
struct router *ptr;
ptr=start;
while(ptr!=NULL){
int a;
int b;
int c;
int d;
sscanf(ptr->ip, "%d.%d.%d.%d", &a, &b, &c, &d);
int num1 = concatenate(a,b);
int num2 = concatenate(c,d);
int num3 = concatenate(num1,num2);
printf("%d\n",num3);
ptr=ptr->next;
};
}
问题:
我正在处理IP地址数字,例如198.32.141.140
我将它们分解为4个整数并将它们连接起来形成 19832141140
,但是我的连接函数正在对较大的数字进行数学运算,例如198.32.141.140
(变为)->-1642695340
但它连接的是小数字的IP,例如164.78.104.1
变成164781041
(这是正确的)
我应该如何解决这个问题,基本上我正在尝试将一串 IP 例如变成198.32.141.140
一个整数19832141140