【问题标题】:Using getByte() with primitive data将 getByte() 与原始数据一起使用
【发布时间】:2012-10-16 14:51:00
【问题描述】:

在 JAVA 中,方法 getByte() 未定义用于 Ints、Booleans 和所有原始数据类型(我相信)。

  • 有什么方法可以让我的布尔和/或整数变量使用 方法。
  • 或者你推荐什么数据类型我也改变变量。

【问题讨论】:

标签: java methods boolean int primitive-types


【解决方案1】:

您可以使用ByteBuffer 将基元转换为byte[],反之亦然

例子

public static byte[] toByteArray(int value) {
    ByteBuffer bb = ByteBuffer.allocate(4).order(ByteOrder.nativeOrder());
    return bb.putInt(value).array();
}

public static int toInteger(byte[] bytes) {
    ByteBuffer bb = ByteBuffer.wrap(bytes).order(ByteOrder.nativeOrder());
    return bb.getInt();
}

【讨论】:

  • +1 您可能想使用ByteBuffer.allocate(4).order(ByteBuffer.nativeOrder());ByteBuffer.wrap(bytes).order(ByteBuffer.nativeOrder());
  • @PeterLawrey 谢谢 学到了更好的方法:)
【解决方案2】:

如果您正在写入二进制流,通常您只需要单个字节。如果这是它的用途,我建议您使用DataOutputStream 将network/big-endian 写入OutputStream 或ByteBuffer,如果您需要little-endian 或者您正在写入NIO 或NIO2。

如果您需要执行按位操作,例如获取低 8 位,您可以使用带有 & 的掩码或与 >>> 的某种组合来获取其他位。使用哪些操作取决于您需要它的用途。

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 2020-10-31
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2016-06-28
    相关资源
    最近更新 更多