2016-03-24 17 views
0

Aşağıda bir dizeyi ascii eşdeğerine dönüştüren kodum yazıyor. Dize yalnızca sayıları içerecektir - bu yüzden her karakter için 2 bayt ayırıyorum (sırasıyla 1 ila 9 ascii içinde 49 ila 58) Ancak java.lang.System'de bir java.lang.ArrayStoreException alıyorum. arraycopy (Doğal Yöntem). Bunun neden olduğu hakkında bir fikrin var mı? Daha önce bahsettiğim gibi sadece sayıları dizeler olarak alacağımı unutmayın.Dizi bayt birleştirmesi sırasında 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; 
} 

cevap

1

arraycopy birinci ve üçüncü parametre dizileri olmalıdır ve ascii bir byte, bir byte[] olup. Eğer ASCII bayt dize assetId dönüştürmek istiyorsanız

, sadece getBytes() çağırır:

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