3

バイト配列をHEX文字列にエンコードするために使用される次のコードがあります

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約かかります。エミュレーターでは、永遠のようにかかります。は即座に実行されます。10 seconds3MBsb.append

これは正常ですか?私にはとても遅いように見えますか?速度低下の原因は何ですか?

Samsung Galaxy Tab 2 7.0 でテスト済み

4

3 に答える 3

0

ここに別の提案があります:

public static void writeHexBytes(byte[] data, StringBuilder sb) {
    for (byte b : data) {
        sb.append(String.format("%02X", b));
    }
}
于 2013-04-27T14:55:22.930 に答える