我想知道如何正确引用字节数组
我有一些原始数据类型,每个数据类型大几兆字节
byte[] data1, data2, data3, data4 ... ,data10;
data1 = ..(something 2MB big)
data2 = ..(something 2MB big)
data3 = ..(something 2MB big)
.
.
data10 = ..(something 2MB big)
我想将这10个字节[]安排到一个数组中(这是我的代码出错的地方)
private byte[] arrayofdatas[];
arrayofdatas[1] = data1;
arrayofdatas[2] = data2;
.
.
etc.
我试过这个但是当arrayofdatas [1] = data1行时,我得到一个空指针异常 请帮我清理代码,很难找到这个确切的问题。
P.S。我需要将数据类型保留为byte []。请不要将它们转换为字符串。
编辑:我需要变量arrayofdatas作为字段变量。我遇到了问题,因为我不知道如何将其声明为字段。您的所有答案都使其成为本地并使用了“新”。另一件事......我已经将'10'设为我想要的字节[]的剩余数量。最终我希望这个数组无限制。有没有办法在添加更多byte []时添加到数组,以便将来可以有一个arrayofdata [500],而不必在开始时声明大小?
答案 0 :(得分:4)
private byte[][] arrayofdatas = new byte[10][];
你可以在你的方法中使用它们。
arrayofdatas[0] = data1;
arrayofdatas[1] = data2;
.
.
etc.
请注意,您应将arrayofdatas
声明为类的字段。或者,如果您想在方法中声明它,则应删除private
修饰符。
答案 1 :(得分:3)
您的阵列未正确分配。如果您需要使用二维数组:
byte[][] arrayofdatas = new byte[10][];
arrayofdatas[1] = data1;
arrayofdatas[2] = data2;
.
.
etc.
答案 2 :(得分:1)
byte data[][] = new byte[10][];
data[0]= ..(something 2MB big)
等
答案 3 :(得分:0)
如果我理解正确你需要二维数组。
byte[][] arr2d = new byte[][];
byte [] data1, data2, ....;
arr2d[0] = data1;
arr2d[1] = data2;
///..............
我希望这有帮助,虽然你的问题可能告诉我你的设计并不那么理想。我建议你在这里发布你的任务描述以及你如何设计它。也许你们可以推荐你如何改进你的设计。
答案 4 :(得分:0)
为什么不这样做:
byte[][] data = new byte[10][];
for(int i=0; i<10; i++)
{
byte[i] = ... //fill your data here;
}
答案 5 :(得分:0)
您是否尝试过多维数组?我记得把它们用于String。如果他们为String做了...他们应该为任何其他数据类型,只要你分配字节数据:)
这应该有所帮助。
byte[][] arrayofdatas = new byte[10][];
arrayofdatas[1] = what you wanted for data1 ..(something 2MB big)