0

我有这样的字符串

String text = "f001050000000000003d61c1c1df400200c0000009181600ef014000003f20"

我将其转换为字节以将其作为字节循环

byte[] bytes = new BigInteger(text,16).toByteArray();        
    for (int i = 1; i < bytes.length; i++) 
    {            
        System.out.print(String.format("%02x ", bytes[i]));
    }

我想将 i 的字节值bytes[i]与类似的等效字符串进行比较

for (int i = 1; i < bytes.length; i++) 
    {      
        if (bytes[i] == "f0")
        {
            break;
        }
        System.out.print(String.format("%02x ", bytes[i]));
    }

这肯定行不通,但我该怎么做这个比较

4

2 回答 2

3

byte是数字类型,所以你可以简单地做

if(bytes[i] == (byte)0xf0) { ... }
于 2013-01-30T17:27:06.587 回答
3

bytes[i] == "f0" 始终为假,因为您将 a 的值与 abyte的引用进行比较String

将您的条件更改为

(bytes[i] & 0xFF) == 0xF0

&oxFF因为这样我们屏蔽字节并进行int比较。这样,条件将为真,bytes[i] == -16其位表示为0xF0

更改了引用@isvforall评论的代码

于 2013-01-30T17:27:34.933 回答