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();
}

07-25 23:58