【问题标题】:How store values greater than 127 in byte datatype in java如何在java中以字节数据类型存储大于127的值
【发布时间】:2018-05-30 06:43:23
【问题描述】:

如何在java中以字节数据类型存储大于127的值。

int b = 160;
System.out.println((byte)b);

它打印 -96

注意:我想在 BLE 设备上写入字节。所以不能转换 短或 int。

【问题讨论】:

  • 不要将它们存储在一个字节中。使用 short 或 int。
  • 好吧,我猜你不应该使用字节:P
  • 您将存储在 int 中并将其类型转换为字节。这就是你会得到的。
  • @Vishva Dave,我想在 BLE 设备上写入字节。所以不能将其转换为short或int。

标签: java android


【解决方案1】:

您可能希望将 128-255 范围内的值存储在一个字节中。可以,前提是您不想在同一个字节中存储值 -128 到 -1(显然是在不同的时间)。

当你想读取它时,只需使用按位和运算符:

b & 0xff

【讨论】:

    【解决方案2】:

    byte范围 是 -128 到 +127 的范围。

    您不能在byte 中存储大于 127 的数字,尽管您可以滥用 -128 到 -1 的范围。由于 -96 的 8 位模式匹配以二进制写入的 160,因此获得了输出 -96。粗略地说,如果您将 256 添加到任何负数或使用 b & 256 屏蔽除最后 8 位之外的所有内容,您可以恢复您的原始数字。

    如果您想存储 160,请使用 char(0 到 65535)、shortint

    【讨论】:

      【解决方案3】:

      因此请使用intlong

      【讨论】:

      • 这更像是一个评论而不是一个答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 2018-06-12
      相关资源
      最近更新 更多