将相同的位序列解释为不同的数据类型

时间:2011-11-07 20:42:34

标签: java types memory-management

我们可以在java中读取与不同数据类型相同的字节序列吗?我想知道这是否可能。目的是演示内存中不同数据类型的表示,特别是Java。

2 个答案:

答案 0 :(得分:3)

您可以使用以下方法将double转换为long来保留其二进制表示(而不是值):doubleToLongBits()doubleToRawLongBits()和{{1} }。

你也可以像这样使用ByteBuffer

longBitsToDouble()

输出:

import java.nio.ByteBuffer;

public class ByteShow {
  public static void showBytes(ByteBuffer bb) {
    byte[] bytes = bb.array();
    for (byte b : bytes) {
      System.out.format("0x02%x ", b);
    }
    System.out.println();
  }

  public static void main(String[] args) {
    showBytes(ByteBuffer.allocate(4).putInt(0x12345678));
    showBytes(ByteBuffer.allocate(8).putDouble(Math.PI))
    showBytes(ByteBuffer.allocate(2).putChar('@'));
  }
}

另见post

答案 1 :(得分:0)

您可以在Union;)

中使用Javolution类型