2017-10-20 92 views
-1

想象一下,我有一個字節數組ID。如何找出數組在初始化時需要多長時間?

後來我想數據這種方式存儲在它:

ids[cz << 24 | cx << 16 | y << 8 | z << 4 | x] 

CZ,CX,Y,Y,Z,X在這種情況下int類型。

那麼當我創建它時,數組需要多長時間? 我想我必須初始化數組是這樣的:

byte[] ids = new byte[maxCz * maxCx * maxY * maxZ * maxX]; 

但它總是給我一個ArrayIndexOutOfBoundsException。

+0

不知道'maxCz','maxCx','maxZ'或'maxX'在這裏很難幫到你。 –

+0

它們表示cz,cx,x,y,z的最大值。例如:int cx = 7,int cz = 7,x = 16,y = 256,z = 16。 –

+0

這將是? –

回答

1

OR-ed表達式中最大的組件是cz << 24。假設maxCz是2 ķ -1,剩餘max值的方式選擇用於不同部件的位不重疊,則需要分配

byte[] ids = new byte[(maxCz+1) << 24]; 

maxCz是7,這是一個128 MB的分配,所以陣列將會非常大。