我有以下代码,用于将字节数组编码为十六进制字符串。
private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();
public static void WriteHexBytes(byte[] data, StringBuilder sb)
{
char[] chars = new char[data.length*2];
for (int i = 0; i < data.length; ++i)
{
chars[2*i] = HEX_CHARS[(data[i] & 0xF0) >>> 4];
chars[2*i + 1] = HEX_CHARS[data[i] & 0x0F];
}
sb.append(chars);
}
for
循环非常慢,在真正的设备上编码3MB
的字节大约需要10秒钟
。在模拟器上,它需要非常长的时间才能完成。
sb.append
操作是瞬间完成的。
这正常吗?对我来说似乎非常缓慢?是什么导致了这种缓慢?
在三星Galaxy Tab 2 7.0上进行了测试。
2*i
。将2*i
表达式提取到本地变量中。 - user784540