"Склеивание" 2-х байт
От: orangel  
Дата: 26.06.11 15:44
Оценка:
Доброго времени суток!
В свободное время изучаю C++. В качестве IDE выступает Visual C++ 2010 Express. Столкнулся с одной трудностью.
Нужно считать из бинарного файла два байта. Потом объединенить их HEX значения и результат перевести в десятичное.
Например: два байта в HEX 1F и 2B. Объединение: 1F2B. Десятичное: 7979.
Буду признателен за любую помощь.
Re: "Склеивание" 2-х байт
От: Clevelus Россия http://clevelus.ru
Дата: 26.06.11 16:13
Оценка:
O>Нужно считать из бинарного файла два байта. Потом объединенить их HEX значения и результат перевести в десятичное.
O>Например: два байта в HEX 1F и 2B. Объединение: 1F2B. Десятичное: 7979.

В бинарном файле лежат биты. Вы их можете програмно прочитать побитно, побайтово, или сразу словом (world, uint16 ...).

HEX — это всего лишь представление числа в удобном для человека виде.
Напечатав на экран значение числа получите его в десятичном виде, применив формат- в шестнадцатиричном (hex) ...
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re: "Склеивание" 2-х байт
От: trophim Россия  
Дата: 26.06.11 17:05
Оценка:
Здравствуйте, orangel, Вы писали:

O>Доброго времени суток!

O>В свободное время изучаю C++. В качестве IDE выступает Visual C++ 2010 Express. Столкнулся с одной трудностью.
O>Нужно считать из бинарного файла два байта. Потом объединенить их HEX значения и результат перевести в десятичное.
O>Например: два байта в HEX 1F и 2B. Объединение: 1F2B. Десятичное: 7979.
O>Буду признателен за любую помощь.

Нечто вроде этого?

uint8 x1 — 0x1F;
uint8 x2 = 0x2B;
uint16 result = (x1 << 8) | x2;
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Let it be! — Давайте есть пчелу!
Re[2]: "Склеивание" 2-х байт
От: orangel  
Дата: 27.06.11 03:33
Оценка:
Здравствуйте, trophim, Вы писали:

T>Нечто вроде этого?


T>uint8 x1 — 0x1F;

T>uint8 x2 = 0x2B;
T>uint16 result = (x1 << 8) | x2;

Всем спасибо! Как я понял в этом примере:
сначала происходит сдвиг влево на 8 бит, а затем — побитовое сложение.
Буду изучать поразрядные операции на примерах.
Re: "Склеивание" 2-х байт
От: AleksandrN Россия  
Дата: 29.06.11 18:46
Оценка:
Здравствуйте, orangel, Вы писали:

O>Доброго времени суток!

O>В свободное время изучаю C++. В качестве IDE выступает Visual C++ 2010 Express. Столкнулся с одной трудностью.
O>Нужно считать из бинарного файла два байта. Потом объединенить их HEX значения и результат перевести в десятичное.
O>Например: два байта в HEX 1F и 2B. Объединение: 1F2B. Десятичное: 7979.
O>Буду признателен за любую помощь.

int16_t var;
if (read(handle, &var, sizeof(var)) == sizeof(var)) {
    // судя по примеру, порядок байт в файле - big-endian
    var = ntohs(var);

    printf("шеснадцатеричное %x\nдесятичное %d", (int)var, (int)var);
}
else
    perror("байты не прочитались");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.