gpt4 book ai didi

java - Android:需要帮助理解变量赋值背后的 &0x04

转载 作者:行者123 更新时间:2023-12-02 00:38:43 25 4
gpt4 key购买 nike

想知道是否有人有一些见解或向我指出解释以下代码行的正确文档:

byte flag = (byte) (flagOfCardData&0x04);

我不知道为什么在 flagOfCardData 之后有 &0x04 。我知道它与十六进制有关,但仅此而已。这里是函数中的代码行。

public void onReceiveMsgCardData(byte flagOfCardData,byte[] cardData) {
// TODO Auto-generated method stub
byte flag = (byte) (flagOfCardData&0x04);

if(flag==0x00)
_strMSRData = new String (cardData);
if(flag==0x04)
{
//You need to dencrypt the data here first.
_strMSRData = new String (cardData);
}
_MSRData = null;
_MSRData = new byte[cardData.length];
System.arraycopy(cardData, 0, _MSRData, 0, cardData.length);
_isCardData = true;
handler.post(doHideTopDlg);
handler.post(doHideSwipeTopDlg);
handler.post(doUpdateTVS);
}

我会查找为什么要这样做,但我什至无法找出正确的搜索关键字 DOH!感谢您提供的所有帮助。

这是使用 eclipse 和 java 的 Android sdk。此外,该代码是另一个 SDK 的一部分,该 SDK 是磁卡读卡器的一部分,通过音频端口连接到 Android 设备。该产品称为unimag pro。这是网站:http://www.idtechproducts.com/products/mobile-readers/126.html我确实向他们发送了同样的问题,但谁知道他们是否以及何时会回复。我也会在这里发布他们的答案,供其他可能遇到同样问题的人使用。

如果您需要更多信息,请告诉我。

谢谢。

最佳答案

您的flagOfCardData是一个8位整数,但每个位都单独分配一些独立的含义。就您而言,您想知道其第二位。为此,您需要对 00000100b 执行按位与,即 4:

Mystery byte:  ? ? ? ? ? ? ? ? 
We want bit 2: 0 0 0 0 0 1 0 0
-----------------< bitwise AND
Result 0 0 0 0 0 X 0 0

现在,如果设置了第二位 (1 & 1 = 1),则 X1,并且 0 > 否则 (1 & 0 = 0)。因此,flagOfCardData & 0x04 相应地为 4 或 0。

习惯上只对各个位使用十六进制表示法:

Bit 0: 0x01   Bit 4: 0x10
Bit 1: 0x02 Bit 5: 0x20
Bit 2: 0x04 Bit 6: 0x40
Bit 3: 0x08 Bit 7: 0x80

关于java - Android:需要帮助理解变量赋值背后的 &0x04,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com