ここに 1 つの文字列があり、この文字列を long に変換し、この long 値をバイトに変換しました。このバイト配列の長さは 6 です。
final byte[] tagBytes = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN)
.putLong(Long.parseLong("02201156116")).array();
System.arraycopy(tagBytes, 0, tag, 0, 6);
Log.d("TAG", "TAG in bytes "+Arrays.toString(tag));
ここで私はこのような出力を得ました[52, 84, 49, -125, 0, 0]
今、私は以前のようにこの出力バイトを文字列に変換したい"02201156116"
したがって、ここでは、最初に BIG_ENDIAN でバイトを順序付けてから、Bytes をラップして、そこから long 値を取得する必要があります。しかし、ここで私はなぜそれがうまくいかないのか驚いています
ByteBuffer.wrap(tempDateBytes).order(ByteOrder.BIG_ENDIAN).getLong()
これとその作業
ByteBuffer.wrap(tempDateBytes).order(ByteOrder.LITTLE_ENDIAN).getLong()
これは、Long をバイトに変換するときに LITTLE_ENDIAN を使用したため、BIG_ENDIAN を適用する必要があります。したがって、ここでは BIG_ENDIAN を使用する必要があると思います。ただし、BIG_ENDIAN では機能せず、LITTLE_ENDIAN では機能します。
私が変換するために使用したこの[52, 84, 49, -125, 0, 0]
コード02201156116
long time,time1;
final byte[] tempDateBytes = new byte[8];
System.arraycopy(tagBytes, 0, tempDateBytes, 0, 6);
time1 = ByteBuffer.wrap(tempDateBytes).order(ByteOrder.BIG_ENDIAN).getLong();
time = ByteBuffer.wrap(tempDateBytes).order(ByteOrder.LITTLE_ENDIAN).getLong();
Log.d("TAG", "Orignal TAG "+time);
Log.d("TAG", "BAD TAG "+time1);