Как вывести INT в двоичном?

    System.out.println(String.format("%6.3e",223.45654543434));

приводит к

    2.235e+02

, который является ближайшим я получаю.

Дополнительная информация: http://java.sun.com/j2se/ 1.5.0 / документы / API / Java / Util / Formatter.html # синтаксис

13
задан user299648 17 July 2010 в 01:01
поделиться

4 ответа

Вы можете использовать функцию-член std :: ostream :: write () :

std::cout.write(reinterpret_cast<const char*>(&x), sizeof x);

Обратите внимание, что обычно вы хотите сделать это с потоком, который был открыт в двоичном режиме.

11
ответ дан 1 December 2019 в 00:26
поделиться

Попробуйте:

int x = 5;
std::cout.write(reinterpret_cast<const char*>(&x),sizeof(x));

Примечание. Запись данных в двоичном формате не переносима.
Если вы хотите прочитать его на альтернативной машине, вам необходимо либо иметь точно такую ​​же архитектуру, либо вам нужно стандартизировать формат и убедиться, что все машины используют стандартный формат.

Если вы хотите написать двоичный файл, самый простой способ стандартизировать формат - это преобразовать данные в сетевой формат (для этого есть набор функций htonl () <--> ntohl () и т. Д.)

int x = 5;
u_long  transport = htonl(x);
std::cout.write(reinterpret_cast<const char*>(&transport), sizeof(u_long));

Но самый переносимый формат - просто преобразовать в текст.

std::cout << x;
4
ответ дан 1 December 2019 в 00:26
поделиться

а что насчет этого?

 int x = 5;
cout << (символ) ((0xff000000 & x) >> 24);
cout << (символ) ((0x00ff0000 & x) >> 16);
cout << (символ) ((0x0000ff00 & x) >> 8);
cout << (символ) (0x000000ff & x);

2
ответ дан 1 December 2019 в 00:26
поделиться

Пара подсказок.

Во-первых, чтобы число было между 0 и 2^32 - 1, вам понадобится unsigned четырехбайтовый int.

Во-вторых, четыре байта, начинающиеся по адресу x (&x), уже содержат нужные вам байты.

Помогло?

1
ответ дан 1 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: