有没有办法得到这个?我正在使用INPUT
类来模拟按键,当想要在类型变量中按键时char
,我需要使用以下方法:
INPUT ip;
ip.type = INPUT_KEYBOARD;
//a bunch of code, and flags...
ip.ki.wVk = toupper(foo);
Run Code Online (Sandbox Code Playgroud)
...其中foo是类型char
和用户定义的.
这很好用,直到用户输入一个不是常规字母的字符,这导致注册完全不同的密钥(这是可以理解的).这就是为什么我问是否有一种方法可以让我从变量的值中获取十六进制密钥代码?
我知道我可以switch(foo) case '1': //and so on...
用相应的密钥代码替换不支持的字符,但实际上,这意味着很多不必要的代码.
那么,有什么办法吗?答案非常受欢迎,如果没有,我会以更复杂的方式解决问题.但是,既然这个问题已经发生了好几次,我觉得知道参考可能会有好处.
据我所知,按位运算符对所有相应的位执行检查,如下所示:
\n\necho 64 | 32; //prints 96\necho \'a\' & \'b\'; //prints `\n
Run Code Online (Sandbox Code Playgroud)\n\n当条件&&
和||
运算符对布尔值执行运算时:
echo (int)(true && false); //prints: 0\necho (int)(true || false); //prints: 1\n
Run Code Online (Sandbox Code Playgroud)\n\n当我(在我的脑海中)想要预测按位运算的结果时,我首先将值转换为其二进制表示形式(这取决于数据类型)。之后,我对其进行逐位比较,并将结果转换为合适的输出类型(我认为这是由操作数决定的)。尽管在某一时刻,我尝试对布尔值执行相同的操作,(据我所知)布尔值仅由内存中的一位组成,使true
对应于1\xe2\x82\x82
,并使false
对应于0\xe2\x82\x82
(以二进制形式)。&&
因此,对这些值执行按位运算应该会产生与and类似的结果||
,对吧?为了向您展示我的意思:
true & false => 1\xe2\x82\x82 & 0\xe2\x82\x82 => 0\xe2\x82\x82 => false\ntrue | false => 1\xe2\x82\x82 | 0\xe2\x82\x82 => 1\xe2\x82\x82 => true\n~true => ~1\xe2\x82\x82 => 0\xe2\x82\x82 => false\n
Run Code Online (Sandbox Code Playgroud)\n\n(不包括xor
,因为没有相应的条件布尔运算符。)
对我来说,看起来该行为应该与条件运算符真正等效:
\n\n …