gpt4 book ai didi

将 4 个整数拼接成一个整数

转载 作者:行者123 更新时间:2023-12-02 05:30:33 26 4
gpt4 key购买 nike

您好,我正在尝试将 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

最佳答案

您提出的方法可能是一个非常大的错误。如何区分 127.0.1.1127.0.0.11

最好按原样对待 IP 地址。即a.b.c.d代表

a * 256^3 + b * 256^2 + c * 256^1 + d * 256^0

并以这种方式完成,您不可能遇到我刚才描述的问题。此外,实现是微不足道的:

unsigned int number;
number = (a << 24) + (b << 16) + (c << 8) + d

关于将 4 个整数拼接成一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18291038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com