2016-09-29 31 views
0

我用二進制協議的工作,所以它的正常使用:如何交換大到主機int8號碼?

int32_t number = SOME_NUMBER; 
CFSwapInt32BigToHost(number); 

但是,什麼是關於中int8_t?

+8

一個字節不需要交換。只有大於1個字節的數量纔有字節順序。 –

+0

@PaulR所以我應該使用: (*(int8_t *)[dataSession bytes]); 對不對? – Viktorianec

+1

演員陣容通常是[代碼氣味](https://en.wikipedia.org/wiki/Code_smell) - 請先嚐試一下,看看是否有錯誤或警告。如果沒有,繼續進行,否則理解錯誤或警告,嘗試正確地解決它,並且只有在所有其他都失敗時才使用強制轉換作爲最後的手段。 –

回答

1

Endianess通常指的是字節的順序。由於每個字節都有自己的地址,所以多字節字可以按兩個(或更多,但通常具有大端或小端)不同方向排序,高位字節高位地址或低位字節高位地址。所以你需要一個字節交換。

位不可尋址。所以不需要處理字節序。即使有一項操作可以進行索引,但是沒有人會把這個bit設置爲最重要的。所以你不需要交換。