繁体   English   中英

从 C 中的小端值构造整数

[英]Construct integer from little-endian values in C

我在 C 中有几个变量:

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

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

我知道整数仅限于2^63−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;
}

暂无
暂无

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

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