下面是将字符串转换为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;
}
答案 0 :(得分: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
}