Интерпретация одной и той же битовой последовательности как разных типов данных - PullRequest
1 голос
/ 08 ноября 2011

Можем ли мы прочитать ту же последовательность байтов, что и разные типы данных в Java? Мне было интересно, если это возможно. Цель состоит в том, чтобы продемонстрировать представление различных типов данных в памяти, в частности Java.

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Вы можете преобразовать double в long и сохранить его двоичное представление (а не значение), используя следующие методы: doubleToLongBits(), doubleToRawLongBits() и longBitsToDouble().

Вы также можете использовать ByteBuffer вот так:

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('@'));
  }
}

который выводит:

0x12 0x34 0x56 0x78 
0x40 0x09 0x21 0xfb 0x54 0x44 0x2d 0x18 
0x00 0x40 

Смотрите также этот пост .

0 голосов
/ 08 ноября 2011

Вы можете использовать Union type в Javolution ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...