如前所述,0x0A 等于十进制 10(十)。这等于 LF(换行)的 ASCII 码,在许多系统上都是换行符。但在您的情况下,您使用DisconnectClient,它采用ULONG。无论您是通过0xA 还是仅仅通过10 都无关紧要。
这个数字的含义,在这种情况下,是客户端正在连接的接口。
编辑:再次查看您的代码,您的 disconnectClient 函数与 MSDN 上的函数不同。如果它是用户定义的方法,找出0x0A 的含义需要检查该方法本身或其文档(尽管它可能只是“真实”DisconnectClient 的存根,并且只需传递参数)。
理解十六进制
编辑:如果您想知道这里的所有回答者似乎都知道十六进制 0x0A 等于十进制 10,请继续阅读:
十六进制数以 16 为底(hexa = 6, deca = 10)。我们现在习惯于以 10 为底,但历史表明,甚至在二进制(以 2 为底)数字变得普遍之前,以 20 为底(法国仍然有 quatre-vingt)、以 5 为底(俄罗斯)和其他数字已经被使用用于计算机。 Base-16 与 base-10 一样,但现在你没有 10 个手指,而是 16 个。
计算机只能以位为单位思考,四个位(一个半字节)可以使数字 0-15。为了更容易读写位,使用了十六进制表示法。这会将 A-F 添加到普遍存在的数字 0-9,其中 A 等于 10,B 等于 11,直到 F 等于 15。
在编程语言中,通常以x、0x 或&h(取决于语言)开头的数字表示十六进制数。与十进制数一样,前导零可以被忽略。尾随零有其明显的含义。
十六进制转十进制
那么,如何将十六进制数转换为十进制数?每个数字都应该乘以 16 的幂,而不是十进制的 10 的幂。有一个简单的通用公式可以从任何 base-X 到任何 base-Y,但这里适用于从 base-16 到 base-10。
- 取每个十六进制数字,写下它的十进制版本
- 将每个数字乘以
16^pos,其中 pos == 十六进制数中的位置,最右边的位置为零
- 添加结果
数字0x8B20变成:
8 * 16^3 = 8 * 4096 = 32768
B * 16^2 = 11 * 256 = 2816
2 * 16^1 = 2 * 16 = 32
0 * 16^0 = 0 * 1 = 0
-------- +
35616
手工操作相当乏味,但我希望你能理解。如果您有 Windows,请在运行窗口或搜索框(Vista、W7)中键入 Calc,然后单击查看 > 科学。现在您可以键入十六进制数字(按 F5)并在十进制 (F6)、八进制 (F7) 和二进制 (F8) 之间切换。
关于数字及其基数还有很多要说的,但如果您需要更多,我建议您查看math forum faq 或Wikipedia (more general)。要在多个碱基之间进行转换,请尝试this online base-X calculator。
更新:添加了关于理解和转换十六进制数的部分,认为它可能适用;-)