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