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

标签 java android hex

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

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/

相关文章:

java - XMLWriter 使用 zdef 扩展属性名称?

java - 如何从 MATLAB 连接到 IBM Db2 Event Store?

android - Android WebView 是否加密保存的密码?

android - 如何删除双工具/操作栏?

c - sprintf 将十六进制数组转换为十进制字符数组只读取第一个字节

java - 在Java中将十六进制字节数组的字符串表示形式转换为包含非ascii字符的字符串

javascript - 将字符串编码为 HEX

java - 我可以在具有以下条件的 java 中为以下字符串获取适当的正则表达式吗

java - 无法启动neo4j服务器2.1.2

android - 动态更改 ActionBar 背景颜色