2016-03-24 4 views
0

Unten ist mein Code, um eine Zeichenfolge in seine Ascii-Äquivalent zu konvertieren. Die Zeichenkette enthält nur Zahlen - deshalb weise ich 2 Byte für jedes Zeichen zu (da 1 bis 9 49 bis 58 in Ascii ist) Aber ich bekomme eine java.lang.ArrayStoreException bei java.lang.System. arraycopy (Native Methode). Irgendeine Idee, warum das passiert? Denken Sie daran, dass ich nur Strings wie oben erwähnt einfügen werde.ArrayStoreException während Array-Byte-Verkettung

public byte[] intToAscii(String assetId) { // class main 


int stringLength = assetId.length(); 
byte[] retBuf = new byte[stringLength]; 
int offset = 0; 
for(int i = 0; i < stringLength ; i++){     
    char character = assetId.charAt(i); 
    byte ascii = (byte) character; 
    System.arraycopy(ascii, 0, retBuf, offset, 1); 
    offset += 1; 
    } 
return retBuf; 
} 

Antwort

1

Der erste und der dritte Parameter auf arraycopy müssen Arrays sein, und ist ein asciibyte, kein byte[].

Wenn Sie die Zeichenfolge assetId in ASCII-Zeichen konvertiert werden soll, rufen Sie einfach getBytes():

public byte[] intToAscii(String assetId) { 
    return assetId.getBytes(StandardCharsets.US_ASCII); // or getBytes("US-ASCII") if pre-Java 7 
}