Форум программистов, компьютерный форум, киберфорум
Наши страницы

Преобразование типа byte в десятичный - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Синглтон http://www.cyberforum.ru/cpp-beginners/thread254023.html
необходимо разработать класс, который бы гарантировал, что его экземпляр будет один и только один из объектов данного класса
C++ generate() и equal() доброго всем времени суток! взялся помочь знакомому решить задачу на с++, но видимо немного не рассчитал свой уровень. задача- реализовать чтение строк из двух файлов и вывести строки, которые... http://www.cyberforum.ru/cpp-beginners/thread254018.html
Программа, которая строит квадратную матрицу и переставляет её блоки по условию C++
Составить программу, которая строит квадратную матрицу случайных целых чисел (размером 2n × 2n), выводит ее на экран. А затем поменять местами блоки размером n × n, (все сместить на 1 блок в...
C++ Создать квадратную матрицу
Составить и отладить программу, которая создает (в памяти ЭВМ) квадратную матрицу порядка n (n задавать константой).
C++ Составить программу, которая образует матрицу (n × n) http://www.cyberforum.ru/cpp-beginners/thread254011.html
Составить программу, которая образует матрицу (n × n) случайных вещественных чисел, находит наибольшее значение среди элементов заштрихованной части матрицы и наименьшее - в незаштрихований и выводит...
C++ Вывод названия переменной Решаю дифференциальные уравнения, много уравнений. Использую для вывода результатов отдельно написанную функцию, поэтому необходимо выводить названия переменных и названия массивов. Вообще в самом... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,822
Записей в блоге: 28
26.04.2011, 14:20
Цитата Сообщение от Ortistx Посмотреть сообщение
GAME, не работает.
Вывожу cout<<num; выдает 0012FF18
num в том примере - это указатель. Надо выводить "cout << *num;"

Добавлено через 4 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
например так
При условии, что порядок байтов, в котором хранится числов файле, совпадает с порядком байтов, в котором работает машина. Твой код будет работать по разному на машинах little-endian и big-endian. Потому что объединение для little-endian и для big-endian должно выглядеть по разному

Добавлено через 13 минут
Вот пример кода

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
int main (void)
{
  union
  {
    unsigned char c[2];
    unsigned short s;
  } u;
 
  /* Пишем ручками в массив. Этот процесс будет совпадать с процессом чтения
   * из файла: сначала прочтётся элемент c[0], а потом c[1] */
  u.c[0] = 0x12;
  u.c[1] = 0x34;
 
  /* Распечатаем число, которое соотвествует образу, прочитанному из файла.
   * Если мы образ из файла напрямую кладём в память, то при таком раскладе
   * результат будет зависетьот endian машины, на которой исполняется код */
  printf ("Result1 = 0x%x\n", u.s);
 
  /* Теперь используем интерфейс htons. Он устроен так, что на машинах
   * с big-endian он не изменяет число, а на машинах с little-endian
   * разворачивает байты. В качестве результирующего порядка является
   * network order. Здесь уже на всех endian'ах получим одинаковый результат.
   * Но такой результат всегда будет совпадать с результатом из первого
   * примера для big-endian машин */
  printf ("Result2 = 0x%x\n", htons (u.s));
 
  return 0;
}
Результат исполнения на i386 (little-endian):

Код
Result1 = 0x3412
Result2 = 0x1234
Результат исполнения на sparc (big-endian):

Код
Result1 = 0x1234
Result2 = 0x1234
Видно, что при использовании htons мы имеем одинаковый результат для любого endian'а. Поскольку у Ortistx'а порядок записи байтов в файле является big-endian, то htons его устроит. Если бы порядок был little-endian, то после применения htons пришлось ещё ручками байты разворачивать (для этого вроде бы интерфейс есть, но не помню, как называется)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.