Java - 字节代码的搜索字符串

时间:2013-01-15 02:21:04

标签: java byte

我尝试了很多搜索来找到一种搜索字符串字节代码的方法。这是一个例子:

String stringThatHasBytes = "hello world hello world[B@9304b1";

If stringThatHasBytes . Does have bytes {
return true or false
}

是否有可以在字符串中搜索字节的方法?

3 个答案:

答案 0 :(得分:0)

简而言之,你不能这样做。因为每次打印时字节的打印都会更改。打印出字节不会打印实际的字节,如果你正在寻找字节的精确比较,那就没有意义了。

但是,如果只查找字符串中的任何字节打印,只需控制字符串中的[B@并返回true。

String stringThatHasBytes = "hello world hello world[B@9304b1";

if (stringThatHasBytes.indexOf("[B@") >= 0)
    return true;
} else return false;

修改

如果您需要以有意义的方式打印字节,则应将字节转换为一些有意义的文本,例如:

public static String convertByteArrayToHexString(byte[] b) {
    if (b != null) {
        StringBuilder s = new StringBuilder(2 * b.length);

        for (int i = 0; i < b.length; ++i) {
            final String t = Integer.toHexString(b[i]);
            final int l = t.length();
            if (l > 2) {
                s.append(t.substring(l - 2));
            } else {
                if (l == 1) {
                    s.append("0");
                }
                s.append(t);
            }
        }

        return s.toString();
    } else {
        return "";
    }
}

答案 1 :(得分:0)

看看这个帮助

        byte[] myByteArray = new byte[5];

        myByteArray[0] = 'a';
        myByteArray[1] = 'b';
        myByteArray[2] = 'c';
        myByteArray[3] = 'd';
        myByteArray[4] = 'e';


        for (byte x : myByteArray)
            System.out.println(x);


        String myString = "abcde";

        System.out.println(myString.equals(new String(myByteArray)));

答案 2 :(得分:0)

包含太简单的答案了吗?

boolean hasBytes = str.contains("[B@");

如果是这样,请告诉我,我会告诉你一些好的正则表达!但这应该足够了。