>>522
charArray[j]= (char)((byteArray[i+1]<<8)+byteArray[i]);
これだとbyteArray[i]が0x80-0xFFの場合うまく変換できないんじゃない?

public static char[] toCharArray(byte[] byteArray) {
char[] charArray = new char[(byteArray.length + 1) / 2];
int bpos = 0, cpos = 0;
int loop = byteArray.length - 1;
while (bpos < loop)
charArray[cpos++] = (char) ((byteArray[bpos++] & 0xFF) | (byteArray[bpos++] & 0xFF) << 8);
if (bpos < byteArray.length) charArray[cpos] = (char) (byteArray[bpos] & 0xFF);
return charArray;
}