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"bytea の値をa の参照と 比較するため、常に falseString

条件を次のように変更します

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

&oxFFこのようにしてバイトをマスクし、int比較を行うためです。このようにbytes[i] == -16して、 のビット表現を持つ条件が真になります0xF0

@isvforallさんのコメントを参考にコードを修正

于 2013-01-30T17:27:34.933 に答える