0x0A在C ++中的含义是什么?我应该如何解释或读取这样的十六进制值?
if (version < 760 || version > 760){
disconnectClient(0x0A, STRING_CLIENT_VERSION);
}
uint32_t accnumber = msg.GetU32();
std::string password = msg.GetString();
if(!accnumber){
disconnectClient(0x0A, "You must enter your account number.");
return false;
}
答案 0 :(得分:28)
如前所述,0x0A
等于十进制10
(十)。这等于LF(换行)的ASCII码,这是许多系统上的换行符。但在您的情况下,您使用DisconnectClient
,其中ULONG
。您是通过0xA
还是10
无关紧要。
此编号的含义,在这种情况下,是客户端连接的接口。
编辑:再次查看您的代码,您的disconnectClient
功能与MSDN上的功能不同。如果它是用户定义的方法,找出0x0A
的含义需要检查该方法本身或其文档(尽管它可能只是“真实”DisconnectClient
的存根,并且只需传递参数)。
编辑:如果您想知道这里的所有回答者如何知道十六进制0x0A
等于十进制10
,请继续阅读:
十六进制数是base-16(hexa = 6,deca = 10)。我们现在习惯于基数10,但历史表明,基数为20(法国仍然有quatre-vingt),基数为5(俄罗斯),其他人甚至在二元(基数为2)的数字变得普遍之前就被使用了用于电脑。 Base-16就像10-base一样,但现在你没有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,然后单击查看&gt;科学。现在你可以输入十六进制数字(点击F5)并在十进制(F6),八进制(F7)和二进制(F8)之间切换。
关于数字及其基数还有很多话要说,但如果您需要更多,我建议您查看math forum faq或Wikipedia (more general)。要在多个基数之间进行转换,请尝试this online base-X calculator。
更新: 添加了有关理解和转换十六进制数字的部分,认为它可能适用; - )
答案 1 :(得分:13)
0x是十六进制表示法的前缀。 0x0A是十六进制数A,十进制表示法为10。
答案 2 :(得分:4)
我怀疑它是一个状态代码,作为正在使用的协议的一部分被发送回客户端。通常,设置的每个位都代表一些标志。在这种情况下,设置的标志是对应于(低)2&amp;的标志。 3位(从零开始计数)。处理此问题的更好方法是将标志定义为宏,然后简单地使用它们(ORing以获得组合)。
#define REQUEST_FAILURE 0x02
#define LOGIN_FAILURE 0x08
然后
disconnectClient( REQUEST_FAILURE | LOGIN_FAILURE,
"You must enter your account number." );
答案 3 :(得分:3)
这是十六进制数0A。十进制,为10;在二进制文件中,00001010。
答案 4 :(得分:3)
这是十六进制数,0x0A与十进制数10相同。
在这种情况下,它只是一些编号。
答案 5 :(得分:1)
这是十六进制中的数字10。代表各种代码的数字通常以十六进制给出,以便您可以“查看位”。例如,十六进制中的相同数字,但添加了16位,将为0x1A。加上256位,它将是0x11A。在十进制中,这将是256 + 16 + 10 = 282,更难以看到哪些位开启。
答案 6 :(得分:0)
这是十六进制格式的数字文字。 0x前缀表示十六进制。