2010-12-03 43 views
0

是有一個簡單的方法,以形成從連續8個字節長的長可變....位運算和填充字節一起

TotalSectors = sector[0x28]| 
       sector[0x28+1] << 8 | 
       sector[0x28+2] << 16 | 
       sector[0x28+3] << 24 | 
       sector[0x28+4] << 32 | 
       sector[0x28+5] << 40 | 
       sector[0x28+6] << 48 | 
       sector[0x28+7] << 56; 

凡TotalSectors是一個漫長的可變....

我的工作在windows平臺和Win32 API是我的主要選擇.....這項工作將是有益的任何現有的宏....

在此先感謝...

+1

你可能會填充字節在一起,但這並不意味着你必須將代碼填充到一起。不要討厭空白。 – 2010-12-03 18:54:49

回答

3

Endianness是好的。所以只是演員:

TotalSectors = *(long long*)&sector[0x28]; 
+1

對齊方式也不錯... – xscott 2010-12-03 19:07:43

0

我想你已經寫了e asy的出路,那麼爲什麼不簡單地把它作爲一個內聯函數呢?

1

for循環呢?

for (int i = 0; i < 8; ++i) 
    TotalSectors |= sector[0x28+i]<<(8*i);