【发布时间】:2012-10-16 14:51:00
【问题描述】:
在 JAVA 中,方法 getByte() 未定义用于 Ints、Booleans 和所有原始数据类型(我相信)。
- 有什么方法可以让我的布尔和/或整数变量使用 方法。
- 或者你推荐什么数据类型我也改变变量。
【问题讨论】:
标签: java methods boolean int primitive-types
在 JAVA 中,方法 getByte() 未定义用于 Ints、Booleans 和所有原始数据类型(我相信)。
【问题讨论】:
标签: java methods boolean int primitive-types
您可以使用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();
}
【讨论】:
ByteBuffer.allocate(4).order(ByteBuffer.nativeOrder()); 和ByteBuffer.wrap(bytes).order(ByteBuffer.nativeOrder());
如果您正在写入二进制流,通常您只需要单个字节。如果这是它的用途,我建议您使用DataOutputStream 将network/big-endian 写入OutputStream 或ByteBuffer,如果您需要little-endian 或者您正在写入NIO 或NIO2。
如果您需要执行按位操作,例如获取低 8 位,您可以使用带有 & 的掩码或与 >>> 的某种组合来获取其他位。使用哪些操作取决于您需要它的用途。
【讨论】: