Hallo,
ich habe folgendes Problem. Ich habe ein byte[], das in ein int[][][] umgewandelt werden soll. Díes wiederum sind mehrere 4x4 Matrizen. Ist egal wozu ich das benötige. Weiß auch dass es andere Möglichkeiten gäbe, die vlt. einfacher wären.
Mein Problem ist. das die Umwandlung nicht ganz funtioniert. Wenn der int[][][] nicht voll wird mit dem byte[], sollen Nullen aufgefüllt werden. Aber beim Rückumwandeln weiß ich nicht, wie ich die Nullen wieder weg machen kann. Zusätzlich wird mit dem int[][][] noch gearbeitet, nachdem es das erste mal umgewandelt wurde, d.h. die Einträge ändern sich. Weiterhin ist die Rückumwandlungdatei viel länger als sie sein sollte.
Ich wollte nun fragen, ob es eine Möglichkeit gibt, die umwandlung so zu machen, dass wieder das gleiche rauskommt, auch wenn zwischen´drin noch damit gearbeitet wurde.
Hier meine bisherige Umwandlung:
und hier die umkehrung:
wäre froh wenn mir wer helfen könnte
ich habe folgendes Problem. Ich habe ein byte[], das in ein int[][][] umgewandelt werden soll. Díes wiederum sind mehrere 4x4 Matrizen. Ist egal wozu ich das benötige. Weiß auch dass es andere Möglichkeiten gäbe, die vlt. einfacher wären.
Mein Problem ist. das die Umwandlung nicht ganz funtioniert. Wenn der int[][][] nicht voll wird mit dem byte[], sollen Nullen aufgefüllt werden. Aber beim Rückumwandeln weiß ich nicht, wie ich die Nullen wieder weg machen kann. Zusätzlich wird mit dem int[][][] noch gearbeitet, nachdem es das erste mal umgewandelt wurde, d.h. die Einträge ändern sich. Weiterhin ist die Rückumwandlungdatei viel länger als sie sein sollte.
Ich wollte nun fragen, ob es eine Möglichkeit gibt, die umwandlung so zu machen, dass wieder das gleiche rauskommt, auch wenn zwischen´drin noch damit gearbeitet wurde.
Hier meine bisherige Umwandlung:
Java:
public int[][][] bytearrayINintmatrixarray(byte[] b){
return intarrayINintmatrixarray(bytearrayINintarray(b));}
Java:
public int[][][] intarrayINintmatrixarray(int[] i){
int[][][] p = new int[i.length/16+1][4][4];
try{
for(int k=0; k<p.length; k++){
p[k][0][0] = i[0+k*16];
p[k][0][1] = i[1+k*16];
p[k][0][2] = i[2+k*16];
p[k][0][3] = i[3+k*16];
p[k][1][0] = i[4+k*16];
p[k][1][1] = i[5+k*16];
p[k][1][2] = i[6+k*16];
p[k][1][3] = i[7+k*16];
p[k][2][0] = i[8+k*16];
p[k][2][1] = i[9+k*16];
p[k][2][2] = i[10+k*16];
p[k][2][3] = i[11+k*16];
p[k][3][0] = i[12+k*16];
p[k][3][1] = i[13+k*16];
p[k][3][2] = i[14+k*16];
p[k][3][3] = i[15+k*16];
}}
catch(ArrayIndexOutOfBoundsException e){}
return p;}
Java:
public int[] bytearrayINintarray(byte[] b){
int[] i = new int[b.length];
for(int k=0; k<b.length; k++){
i[k] = (int) b[k];}
return i;}
und hier die umkehrung:
Java:
public byte[] intmatrixarrayINbytearray(int[][][] iy){
return intarrayINbytearray(intmatrixarrayINintarray(iy));}
Java:
public byte[] intarrayINbytearray(int[] i){
byte[] b = new byte[i.length];
for(int k=0; k<i.length; k++){
b[k] = (byte) i[k];
}
return b;}
Java:
public int[] intmatrixarrayINintarray(int[][][] p){
int[] i = new int[p.length*16];
try{
for(int k=0; k<p.length; k++){
i[0+k*16] = p[k][0][0];
i[1+k*16] = p[k][0][1];
i[2+k*16] = p[k][0][2];
i[3+k*16] = p[k][0][3];
i[4+k*16] = p[k][1][0];
i[5+k*16] = p[k][1][1];
i[6+k*16] = p[k][1][2];
i[7+k*16] = p[k][1][3];
i[8+k*16] = p[k][2][0];
i[9+k*16] = p[k][2][1];
i[10+k*16] = p[k][2][2];
i[11+k*16] = p[k][2][3];
i[12+k*16] = p[k][3][0];
i[13+k*16] = p[k][3][1];
i[14+k*16] = p[k][3][2];
i[15+k*16] = p[k][3][3];
}}
catch(ArrayIndexOutOfBoundsException e){}
return i;}
wäre froh wenn mir wer helfen könnte