[英]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.