2013-01-24 49 views
1

可以說我有這個字節如何將字節數組轉換爲整數?

uint8_t k[8]= {0,0,0,1,1,1,0,0}; 

有沒有辦法讓這個成爲一個整數或十六進制?

+1

哪種語言? –

+0

對不起,它在C – SeowZH

+1

我錯誤地將其標記爲重複。請忽略近距離投票。我很抱歉。 :-(這是一個寫得不好的問題,因爲你沒有表現出努力去做這件事,但它不是重複的。) –

回答

1

如果k表示8個字節的64位整數的,經過8位整數的數組,並將它們轉移到結果左到右:

uint64_t res = 0; 
for (int i = 0 ; i != 8 ; i++) { 
    res <<= 8; 
    res |= k[i]; 
} 

環路的方向取決於原始int的字節存儲在k陣列中的順序。上面的代碼片段顯示了MSB到LSB的順序;如果數組是LSB到MSB,則在7開始循環,然後下降到零。

如果字節代表個別位,則移位一位而不是八位。

+0

感謝您的幫助。 – SeowZH

1

這應該做的伎倆:

int convertToInt(uint8_t k[8], bool leastSignificantFirst) { 
    int res = 0; 
    for (int i = 0; i < 8; ++i) { 
     if (leastSignificantFirst) { 
      res |= (k[i] & 1) << (7 - i); 
     } else { 
      res |= (k[i] & 1) << i; 
     } 
    } 
    return res; 
}