2016-03-24 2 views
0

Ниже приведен мой код для преобразования строки в ее эквивалент ascii. Строка будет содержать только числа - вот почему я выделяю 2 байта для каждого символа (с 1 по 9 - от 49 до 58 в ascii соответственно) Но я получаю java.lang.ArrayStoreException в java.lang.System. arraycopy (родной метод). Любая идея, почему это происходит? Имейте в виду, что я буду только помещать цифры как строки, как упоминалось ранее.ArrayStoreException при конкатенации байтов массива

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

Первый и третий параметр arraycopy должны быть массивами, и ascii является byte, не byte[].

Если вы хотите, чтобы преобразовать строку assetId в ASCII байт, просто вызовите getBytes():

public byte[] intToAscii(String assetId) { 
    return assetId.getBytes(StandardCharsets.US_ASCII); // or getBytes("US-ASCII") if pre-Java 7 
} 
Смежные вопросы