4

char[] 配列に整数データが​​あります。例: 12, 03, 10. データを 16 進形式の文字列で送信したい。

例:0C030A

しかし、16 進数に変換した後、C3A を取得しています。
0C030Aとして正しいデータを取得することをお勧めします。

次のコードを使用しています

String messageBody = "A3";
SimpleDateFormat sdf = new SimpleDateFormat("MM:dd:yy:HH:mm:ss");
String currentDateandTime = sdf.format(new Date(mLocation.getTime()));
char[] temp;
temp = currentDateandTime.split(delimiter);
for( int i = 0; i < temp.length; i++ )
{
    messageBody += Integer.toHexString (Integer.parseInt( temp[i]));
}
4

2 に答える 2

4

String.format()そのために使用できます"%02x"02長さが 2 になるまでゼロで埋めるxことを意味します。 は 16 進数を意味します。

messageBody += String.format("%02x", Integer.parseInt(temp[i]));
于 2012-11-02T17:39:55.523 に答える
0

String.format()パフォーマンスが懸念される場合は、かなり重いものになる可能性があります (多数の孤立したオブジェクトが作成され、すぐに破棄されます)。

もう少しタイトなものが必要な場合は、次のようにすることができます。

final StringBuilder sb = new StringBuilder("0x00000000");
String fmt(int item) {

    int tmp;
    char c;

    for (int i = 9; i >= 2; i--) {

        tmp = (item & 0xF); item >>= 4;
        c = (char) (tmp < 10 ? '0' + tmp : 'A' + tmp - 10);
        sb.setCharAt(i, c);
    }

    return sb.toString();
}

これをさらに最適化することもできます(つまり、使用する変数を減らし、反復を少なくする)が、今のところこれで十分だと思います:)スレッドセーフではないなど.

于 2012-11-03T16:16:09.423 に答える