2016-03-24 8 views
0

以下は、文字列をそのASCII文字に変換するコードです。文字列には数値のみが含まれているので、1文字ごとに2バイトを割り当てます(1から9はそれぞれasciiで49から58までです)。 しかし、java.lang.ArrayStoreExceptionが発生しています。 java.lang.System。 arraycopy(ネイティブメソッド)。なぜこれが起こっているのか?前に述べたように、私はストリングとしてだけ数字を入れます。配列のバイト連結中のArrayStoreException

答えて

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

arraycopyに第一及び第三のパラメータは配列でなければならず、asciibyte、ないbyte[]あります。

あなただけgetBytes()を呼び出し、ASCIIバイトに文字列assetIdを変換したい場合:

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