繁体   English   中英

从字符串中的4个连续字节获取整数值

[英]Get an Integer value from 4 consecutive bytes in a string

给定一个char数组,我必须在int类型的变量中保存一个数字,该数字在该char数组中的4个连续字节上表示。 我知道第一个字节在该数组中的位置。 我该怎么办?

编辑:解决方案#1:

 int number , offset;
 char *data;
 memcpy(&number, &data[offset], 4);

解决方案#2:

 int number , offset;
 char *data;
 number = *(int*)(data + offset);
 // offset: where the first of the four bytes is situated

没有测试过

int convert_to_int(chat *buff, int ascii, int str, int endianess)
{
    union
    {
        int i;
        unsigned char uc[sizeof(int)];
    }ui = {.i = 0};
    int mult = 1;

    if(str)
    {
        for(int digit = 0; digit < sizeof(ui.i); digit++)
        {
            mult *= 10;
        }
    }

    for(size_t index = 0; index < sizeof(int); index++)
    {
        size_t pos = endianess ? index : sizeof(ui.i) - 1 - index;

        if(str)
        {
            ui.i += mul * (*buff++ - '0');
            mul /= 10;
        }
        else
        {
            ui[pos] = ascii ? *buff++ - '0' : *buff++;
        }
    }
    return ui.i;
}

这就是我试图做的事情。 这是正确的,但我有一个错误的偏移,我认为这个方法是错误的。 使用memcpy,我得到了相同的结果,所以我知道哪个是问题所在。

 int number , offset;
 char *data;
 number = *(int*)(data + offset);
 // offset: where the first of the four bytes is situated

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM