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 # синтаксис
Вы можете использовать функцию-член std :: ostream :: write ()
:
std::cout.write(reinterpret_cast<const char*>(&x), sizeof x);
Обратите внимание, что обычно вы хотите сделать это с потоком, который был открыт в двоичном режиме.
Попробуйте:
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;
а что насчет этого?
int x = 5;
cout << (символ) ((0xff000000 & x) >> 24);
cout << (символ) ((0x00ff0000 & x) >> 16);
cout << (символ) ((0x0000ff00 & x) >> 8);
cout << (символ) (0x000000ff & x);
Пара подсказок.
Во-первых, чтобы число было между 0 и 2^32 - 1, вам понадобится unsigned четырехбайтовый int.
Во-вторых, четыре байта, начинающиеся по адресу x (&x), уже содержат нужные вам байты.
Помогло?