GCC JRE仿真String类未实现String(byte[] bytes)
构造函数和String.getBytes()
方法。
有人知道实现吗?我不想使用char[]
,但是似乎没有其他解决方案。
最佳答案
如果您在Chrome中创建大型阵列,则可能会遇到Uncaught RangeError: Maximum call stack size exceeded异常。可以将LINEMAN78中的代码修改为使用StringBuilder,从而避免了此问题。
public static String getString(byte[] bytes, int bytesPerChar)
{
if (bytes == null) throw new IllegalArgumentException("bytes cannot be null");
if (bytesPerChar < 1) throw new IllegalArgumentException("bytesPerChar must be greater than 1");
final int length = bytes.length / bytesPerChar;
final StringBuilder retValue = new StringBuilder();
for (int i = 0; i < length; i++)
{
char thisChar = 0;
for (int j = 0; j < bytesPerChar; j++)
{
int shift = (bytesPerChar - 1 - j) * 8;
thisChar |= (0x000000FF << shift) & (((int) bytes[i * bytesPerChar + j]) << shift);
}
retValue.append(thisChar);
}
return retValue.toString();
}