[英]Accessing lower half of a 64bit integer
如何使用C或C ++访问64位整数的下半部分? 我可以在Assembly中轻松完成此操作,但对如何在C / C ++中执行操作一无所知
编辑:访问上半部分怎么样?
long long BigOne = 0x1234567890ABCDEFLL;
long long LowerHalf = BigOne & 0xFFFFFFFFLL;
long long UpperHalf = (BigOne >> 32) & 0xFFFFFFFFLL;
抱歉,如果十六进制文字需要一些前缀/后缀,我对C不太熟悉。请知道答案。
我以前使用过各种技巧来做到这一点。 使用工会,长班等。
如今,我只使用内存复制。 听起来效率低下,但是上次我检查了编译器,将代码优化的很好:
int32_t higher32 (unsigned long long arg)
{
unsigned char * data = (unsigned char *) arg;
int32_t result;
memcpy (&result, data+4, sizeof (int32_t));
return result;
}
int32_t lower32 (unsigned long long arg)
{
unsigned char * data = (unsigned char *) arg;
int32_t result;
memcpy (&result, data+0, sizeof (int32_t));
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.