【发布时间】:2014-06-05 13:22:38
【问题描述】:
嘿,所以我想知道是否有人可以解释这是如何工作的,我必须从一个字节中检索第三位,它是一个布尔值,我对它的实际工作原理感到困惑,如果我有语法正确。我不断提出很多不同的例子来说明如何做到这一点。这就是我所拥有的:
if(apdu_parse[0] & (1<<3)){
apdu_bit3 = 1;
}
else if(apdu_parse[0] & (0<<3)){
apdu_bit3 = 0;
}
mpdu -> segmented_message = apdu_bit3;
我认为这样做是寻找 apdu_parse[0] 的第三位来确定它是 1 还是 0 并相应地存储它。正如我所说,我不断遇到很多不同的例子,我认为我开始将它们混合起来,但没有任何效果。 apdu_parse[0] 中的值是一个十六进制值,我一直得到 '93' 这没有任何意义。
【问题讨论】:
-
请告诉我们
apdu_parse、apdu_bit3和mpdu->segmented_message是如何定义的(它们的类型是什么)以及如何打印结果? -
(0<<3)O_ó 这应该是什么意思? -
@Pavel:没必要回答他/她的问题。
-
为什么不只是
apdu_bit3 = (apdu_parse[0] >> 3) & 1;
标签: c bit-shift byte-shifting