在这里,我有一个字符串,我将此字符串转换为 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]
现在我想像以前一样在 String 中转换这个输出字节"02201156116"
所以在这里我必须首先在 BIG_ENDIAN 中排序字节,然后包装字节并从中获取长值。但是在这里我很惊讶为什么它不适合
ByteBuffer.wrap(tempDateBytes).order(ByteOrder.BIG_ENDIAN).getLong()
这和它的工作
ByteBuffer.wrap(tempDateBytes).order(ByteOrder.LITTLE_ENDIAN).getLong()
这个,顺便说一句,我们必须应用 BIG_ENDIAN,因为当我们将 long 转换为字节时,我们使用了 LITTLE_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);