【问题标题】:Android | LSB & MSB安卓 |最低位和最高位
【发布时间】:2017-05-29 08:38:15
【问题描述】:

在向设备发送请求时,我遇到了 LSB 和 MSB 问题。我需要发送 sessionId(int)。它需要以四个字节发送。现在我正在发送这样的字节数组:
所以,例如,如果 sessionID 是 14 我正在发送:

public static final byte[] intToByteArray(int value) {
        return new byte[] {
                (byte)(value >>> 24),
                (byte)(value >>> 16),
                (byte)(value >>> 8),
                (byte)value};
    }


byteData[36] - 0
byteData[37] - 0
byteData[38] - 0
byteData[39] - 14

问题是 - 我需要将 byteData[36] 设置为 LSB,将 byteData[39] 设置为 MSB。你能帮我解决这个问题吗?在此先感谢:)

【问题讨论】:

  • 看看this的回答。
  • 有了这个解决方案 byteData[39] 仍然是 14。我需要值 14 在 byteData[36]
  • 只需使用ByteOrder.LITTLE_ENDIAN 而不是ByteOrder.BIG_ENDIAN 顺序。

标签: android arrays byte endianness


【解决方案1】:

this 回复Gregory PakoszByteOrder.BIG_ENDIANByteOrder.LITTLE_ENDIAN 订单更改:

ByteBuffer b = ByteBuffer.allocate(4);
b.order(ByteOrder.LITTLE_ENDIAN);
b.putInt(14);
byte[] result = b.array();

在这种情况下b[0] == 14

【讨论】:

    猜你喜欢
    • 2020-09-07
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2013-03-22
    • 2017-08-26
    • 2013-11-03
    相关资源
    最近更新 更多