java - 字节数组是二维字节数组吗?

标签 java

我有一个字节数组:

private final static byte[][] ARRAY = {
    { (byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd },
    { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44 }
};

给定一个任意字节数组:

byte[] check = { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44) };

byte[] check2 = { (byte) 0x12, (byte) 0x23, (byte) 0x34, (byte) 0x45) };

检查 checkcheck2 是否在 ARRAY 中与所写的完全一致(以相同的顺序等)的最佳方法是什么?

我可以根据需要将 ARRAY 更改为任何其他数据结构,但 checkcheck2 作为字节数组提供。

最佳答案

您可以使用Arrays.equals()来比较两个数组。来自 javadoc :

Returns true if the two specified arrays of bytes are equal to one another. Two arrays are considered equal if both arrays contain the same number of elements, and all corresponding pairs of elements in the two arrays are equal.

byte[] check = { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44 };
byte[] check2 = { (byte) 0x12, (byte) 0x23, (byte) 0x34, (byte) 0x45 };

int i = 0;
for (; i < ARRAY.length; i++) {
    if (Arrays.equals(ARRAY[i], check)) {
        System.out.println("check[] found at index: " + i);
        break;
    }
}
if (i == ARRAY.length) {
    System.out.println("check[] not found");
}

for (i = 0; i < ARRAY.length; i++) {
    if (Arrays.equals(ARRAY[i], check2)) {
        System.out.println("check2[] found at index: " + i);
        break;
    }
}
if (i == ARRAY.length) {
    System.out.println("check2[] not found");
}

输出:

check[] found at index: 1
check2[] not found

关于java - 字节数组是二维字节数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33006535/

相关文章:

java - Servlet 在过滤器中转发给出了意外结果

java - SpringBootTest @EnabledWebSocket 忽略

java - Android 进度条大小调整

java - 为什么当我将一个 int 分配给一个 float 时,它不是相同的值?

java - jOOQ - 多重绑定(bind)

java - 如何在java中打开记事本文件?

Java/groovy反射读取方法内容

java - HttpPost写入body以及请求参数

java - Android 将项目添加到全局上下文菜单

java - Mac 上的 SWT 应用程序 : Minimum requirements if I support Cocoa, 但不是 Carbon?