Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
#1

Присвоить переменной типа int содержимое четырёх байт из массива - C++

09.07.2013, 10:40. Просмотров 1142. Ответов 6
Метки нет (Все метки)

Есть массив байт. Нужно выбрать из него четыре байта подряд (например, со второго по пятый) и вернуть как int.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2013, 10:40     Присвоить переменной типа int содержимое четырёх байт из массива
Посмотрите здесь:

Присвоить переменной Char значение третьего байта переменно типа Int - C++
всем привет, на одном собеседовании передо мной поставили следующую задачу, присвоить переменной char ch, значение третьего байта переменно...

Считать массив байт в переменную типа int в обратном порядке - C++
Есть массив байт: char byData = {0x87, 0xd6, 0x12, 0x00}; Нужно считать его в переменную типа int в обратном порядке, т.е. должно...

Как присвоить такое значение переменной int - C++
есть две переменные типа int int x=2; int y=3; я хочу чтобы третья переменная Z(тоже тип int) имело значение 23, то есть...

Значение переменной типа int - C++
Я хочу присвоить переменной типа int значение 2147483648, а в gdb я посмотрел значение переменной и оно оказалось равным -2147483648, в чем...

Максимальное значение переменной типа int - C++
Если тип long в 2 раза больше чем int. Сколько максимум в int? В чём они измеряются в памяти? в цифрах вывода?

Обращение к переменной типа int в СУБД - C++
Как обращаться к переменной типа int в СУБД в условии? Допустим с типом char вот так: if(!strcmp (a.p,b)) Тут у меня был...

Как присвоить переменной типа string значение из файла - C++
Название файла неизвестно, задается пользователем в командой строке при вызове программы. Т.е. Допусти, что мы присвоили переменной ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
09.07.2013, 11:27     Присвоить переменной типа int содержимое четырёх байт из массива #2
попробуйте так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char byte_arr[100];
 
int byte_arr_to_int()
{
  int r = 0;
  int beg = 2;
  int fin = 5;
  for(; beg<=fin; ++beg)
  {
    r |= byte_arr[beg];
    r <<= 8;
  }
  return r;
}
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.07.2013, 11:32     Присвоить переменной типа int содержимое четырёх байт из массива #3
C++
1
2
3
4
5
6
7
8
9
union bytes2int{
  int data;
  unsigned char bytes[4];
}trans;
int main(){
  for(int i=0; i<4; i++) std::cin>>trans.bytes[i];
  std::cout<<trans.data;
  return 0;
}
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
09.07.2013, 11:36     Присвоить переменной типа int содержимое четырёх байт из массива #4
Цитата Сообщение от Vtulhu Посмотреть сообщение
Есть массив байт. Нужно выбрать из него четыре байта подряд (например, со второго по пятый) и вернуть как int.
Присвоить указателю на int адрес первого нужного байта в массиве.
Выставить ассерт "sizeof (int) == 4". Вспомнить про big endian / little endian.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
09.07.2013, 11:40     Присвоить переменной типа int содержимое четырёх байт из массива #5
Kuzia domovenok, буквально недавно думал над тем, что никогда не пользовался union, спасибо за хороший пример
rlib
20 / 20 / 1
Регистрация: 01.05.2012
Сообщений: 60
09.07.2013, 11:41     Присвоить переменной типа int содержимое четырёх байт из массива #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#define BYTES_PER_INT 4
#define BITS_PER_BYTE 8
int form_int ( int *indexes, char *bytes ) {
    // indexes = pointer to array of indexes
    // bytes = pointer to bytes from which to form the integer
    int i, k, result = 0;
    for (i=0; i<BYTES_PER_INT; i++) {
        result |= bytes[indexes[i]] << i*BITS_PER_BYTE;
    }
    return result;
}
int main() {
    char bytes[8] = {0x1, 0x1, 0x1, 0x1, 0x5, 0x6, 0x7, 0x9};   
    int i, indexes[4] = {1,2,3,4};
    i = form_int( indexes, bytes );
    printf ("%d", i);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 11:49     Присвоить переменной типа int содержимое четырёх байт из массива
Еще ссылки по теме:

Как присвоить переменной типа String значение argv[0]? - C++
Как присвоить переменной типа String значение argv? Заранее спасибо =)

Получить содержимое файла в виде массива байт - C++
Доброго времени) Мне нужно массив байт файла(любого,как txt , так и exe), но стал использовать вектор для начала. Написал вот такую...

Конвертация переменной типа string в массив int - C++
Добрый день. Есть строка string выглядит следующим образом: string str = &quot;01 07 45 0F 12 00 02 09 10 BA 00 34 33 30 35 32 31 31 33&quot;; ...

Присвоить переменной типа string сумму двух других строк - C++
Как это вооплотить? Почему при таком подходе просто зависание String a=&quot;Номер группы - &quot;; String c; Cin&gt;&gt;c; String x={a,c}; ...

Возможно ли присвоить переменной типа string префикс 'L' при выводе - C++
Возможно ли присвоить переменной типа string префикс 'L' при выводе? Если да, то как. Проблема в том, что слово хранящееся в переменной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
09.07.2013, 11:49     Присвоить переменной типа int содержимое четырёх байт из массива #7
А такой вариант сойдет?
C++
1
2
3
int get_int(char* p, size_t pos) {
    return *reinterpret_cast<int*>(&p[pos]);
}
Подразумевается, что размер int - четыре байта.
Yandex
Объявления
09.07.2013, 11:49     Присвоить переменной типа int содержимое четырёх байт из массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru