从 C 中的小端值构造整数

标签 c char type-conversion

我在 C: 中有几个变量

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

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

我知道整数限制为 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;
}

关于从 C 中的小端值构造整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734608/

相关文章:

c - 微型过滤器驱动程序 : how to replace file content on open?

C 数组与结构

bash - 将 ASCII 中的 Char 值保存在 bash 变量中

swift - Swift 中的向上转换和向下转换混淆?

c++ - 从 int 到 shared_ptr 的隐式转换

c - 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

c - 子进程中的篡改检测

java - 如何更改方法中字符串的字符? (相同字符,随机顺序)

java - 将 char 类型的默认值 (0) 附加到 string

c - 将 CSV 文件存储到 C 中的 Float Matrix