我在 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/