2016-03-08 76 views
2

我在讀async file i/o。寫入文件時,microsoft將bufferSize設置爲4096字節,但在讀取時使用[0x1000]。我明白,這就像一個4k塊一樣,將bufferSize設置爲4096. 我的問題是爲什麼他們會使用十六進制值而不是整數?讀取字節數組

+0

我不知道如何理解這個問題;整數值4096(十進制表示形式)恰好爲1000(十六進制表示形式)。你的問題是爲什麼有時使用十進制表示法,有時使用十六進制表示法? – Codor

+3

他們*使用一個整數,僅用十六進制表示法。至於爲什麼,它在這種情況下的文體選擇。使用十六進制符號有很多優點,例如[爲什麼使用十六進制?](http://stackoverflow.com/questions/243712/why-use-hex) –

+0

這是一個簡單的常量。您可以通過多種方式定義相同的常量值,程序選擇哪種方式並不重要,但對人類閱讀來源可能有用,例如,當使用比「1024」(比如說「第10位設置」)的位操作時,常數'1 << 10'更清楚。真正重要的是價值,但你並沒有問這個問題。 – Sinatr

回答

4

從實際的角度來看,沒有區別。它們本質上是相同的價值。但是,正如你可能知道的那樣,計算機往往更好地處理兩個冪。 0x1000只是傾向於使思路比4096更清晰。

這與爲什麼要使用十六進制而不是十進制值分配標誌值的原因相同。它向讀者明確表明其價值不是十六進制的純粹數字,而是刻意的。也就是說,當它完全不相關時,不要使用十六進制。

int numberOfCats = 0xA7; 

希望幫助!

+0

所以答案是「電腦往往處理得更好」? – Sinatr

+0

@Sinatr不是「計算機程序員傾向於更好地處理」。計算機處理更好的部分是談論兩個冪,而不是使用十六進制數字。 –

+0

@Sinatr不,技術上沒有。計算機不關心你是否分配一個相當於完整內存頁面,內存頁面3/4的數量,或者如果你正在寫BIOS。然而,兩個冪更好處理。 – Neil