数组字节串联期间的ArrayStoreException

时间:2016-03-24 01:49:05

标签: java

下面是将字符串转换为ascii等效字符的代码。该字符串将只包含数字 - 这就是我为每个字符分配2个字节的原因(因为1到9分别是ascii中的49到58) 但是我得到了一个java.lang.ArrayStoreException     在java.lang.System.arraycopy(Native Method)。知道为什么会这样吗?请记住,我将仅按照前面提到的字符串输入数字。

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;
}

1 个答案:

答案 0 :(得分:1)

arraycopy的第一个和第三个参数必须是数组,而asciibyte,而不是byte[]

如果要将字符串assetId转换为ASCII字节,只需调用getBytes()

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