私のAndroidプログラムには、Javaで記述された次のメソッドがあります。
このメソッドは16進数の文字列を受け取り、ASCIIで記述された同じテキストの文字列を返します。
public static String hexToString(String hex)
{
StringBuilder sb = new StringBuilder();
for (int count = 0; count < hex.length() - 1; count += 2)
{
String output = hex.substring(count, (count + 2)); //grab the hex in pairs
int decimal = Integer.parseInt(output, 16); //convert hex to decimal
sb.append((char)decimal); //convert the decimal to character
}
return sb.toString();
}
この方法は問題なく機能しますが、私のプログラムは非常にタイムクリティカルであり、この方法は潜在的に何万回も呼び出されています。私のプログラムの遅い部分を分析するとき、この方法は次の理由で非常に多くの時間を費やします:
Integer.parseInt(output, 16);
と
hex.substring(count, (count + 2));
遅いものから順に。
同じことを達成するためのより速い方法を知っている人はいますか?