2016-03-08 78 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