2D 数组到 int(种子)并返回



我有一个问题...

这里我们得到了一个 2d 字节数组:

byte[][] duengonMap = new byte[500][500];

因为我想将其从客户端发送到服务器或反过来,我需要把它放在一个整数/长整型中。从服务器,它将被发送到其他连接的客户端,在那里它将转换回 2D 数组。听起来很简单...但是我该怎么做呢?

我尝试了这样的事情:

int[][] twoD = new int[][] { new int[] { 1, 2 },
        new int[] { 3, 4 } };
int[][] newTwoD = null; // will deserialize to this
System.out.println("Before serialization");
for (int[] arr : twoD) {
    for (int val : arr) {
        System.out.println(val);
    }
}
try {
    FileOutputStream fos = new FileOutputStream("test.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(twoD);
    FileInputStream fis = new FileInputStream("test.dat");
    ObjectInputStream iis = new ObjectInputStream(fis);
    newTwoD = (int[][]) iis.readObject();
} catch (Exception e) {
}
System.out.println("After serialization");
for (int[] arr : newTwoD) {
    for (int val : arr) {
        System.out.println(val);
    }
}
}

它只转换为"文件"也许我做错了,但是我不知道如何将其转换为整数或长整型...有什么想法吗?还是例子?

您可以使用循环逐个发送所有值,并在服务器/客户端上同时读取它们并将它们排列回数组中

基本上,有两个问题需要解决。

1)如何将字节转换为整数,反之亦然...这很简单,在这里可能已经回答了无数次。请参阅此处示例

2)现在,您知道如何发送一个字节/整数...你唯一要做的...是定义要遍历数组的顺序。意思:你遍历你的字节数组,将每个字节作为 int 发送;另一方面,您读取 int 值,并使用相同的遍历算法填充字节数组。

当然,最简单的解决方案是嵌套循环;但根据你的数据;你可能会发现其他想法很有帮助。例如:如果您的字节数组包含许多 0 值...您可能决定只传输非 0 值(例如发送由索引+值组成的对)。

最新更新