2012-01-18 128 views
2

我想知道如何正确地引用一个数组中的字节数组的数组字节[]

我有一些原始数据类型,这是说一对夫妇兆大型每个

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'成为我想要的字节[]的任意数量。最终我想这个数组是无界的。是否有添加更多字节[]的方式添加到数组中,以便将来可以有一个arrayofdata [500],而不必在开始时声明大小?

回答

4
private byte[][] arrayofdatas = new byte[10][]; 

而且你可以在你的方法中使用它们。

arrayofdatas[0] = data1; 
arrayofdatas[1] = data2; 
. 
. 
etc. 

请注意,您应该声明arrayofdatas作为类的字段。或者如果你想在方法中声明它,你应该删除private修饰符。

+0

如果其10个数据数组,以及开始在arrayofdatas索引1,则应分配11个数据阵列:'新的字节[11] [];' –

+0

耶。我修好了它。 – shift66

1
byte data[][] = new byte[10][]; 

data[0]= ..(something 2MB big) 

0

如果我正确理解你,你需要2维数组。

byte[][] arr2d = new byte[][]; 
byte [] data1, data2, ....; 
arr2d[0] = data1; 
arr2d[1] = data2; 
///.............. 

我希望这可以帮助,虽然你的问题可能表明你的设计不是那么理想。我建议你在这里发布你的任务描述以及你如何设计它。可能家伙可以推荐你如何改进你的设计。

0

为什么不能做这样的事情:

byte[][] data = new byte[10][]; 
for(int i=0; i<10; i++) 
{ 
    byte[i] = ... //fill your data here; 
} 
3

你的阵列是不是正确分配。如果您需要二维阵列使用:

byte[][] arrayofdatas = new byte[10][]; 
arrayofdatas[1] = data1; 
arrayofdatas[2] = data2; 
. 
. 
etc. 
0

您是否尝试过多维数组?我记得使用他们的字符串。如果他们这样做了字符串...他们应该为任何其他数据类型,只要你分配字节数据:)

这应该有所帮助。

byte[][] arrayofdatas = new byte[10][]; 
arrayofdatas[1] = what you wanted for data1 ..(something 2MB big) 
+0

嘿嘿...我已经看到很多答案了:P – rajugaadu