从C中的little-endian值构造整数

时间:2019-04-17 19:20:36

标签: c char type-conversion

我在C中有几个变量:

  • char* data指向数据的指针(始终在LE中)
  • int dataStart-data从我的整数开始的偏移量
  • int dataLength-具有整数数据(0<=dataLength<=8)的字节数
  • int sign-1代表正数或-1代表负数

如何在C中将其转换为__int64(或者我需要其他东西?)值?

我知道整数限制为2^63−1

1 个答案:

答案 0 :(得分:-1)

int64_t makeint(const char *buff, size_t offset, size_t offsetinint, size_t len, int minus)
{
    union
    {
        int64_t i64;
        uint8_t u8[8]
    }d64;

    offsetinint = offsetinint & 7;
    memset(&d64, 0, sizeof(d64));

    memcpy(&d64.u8[offsetinint], len > (8 - offsetinint) ? (8 - offsetinint) : len, buff + offset);
    d64.i64 *= -1 * !!minus;
    return d64.i64;
}