Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
1

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

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

Author24 — интернет-сервис помощи студентам
Есть массив байт. Нужно выбрать из него четыре байта подряд (например, со второго по пятый) и вернуть как int.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2013, 10:40
Ответы с готовыми решениями:

Как присвоить значение одного из элементов массива типа char переменной типа int?
С++ начал буквально только что так что буду благодарен за терпение и понимание ) Сразу оговорюсь...

Невозможно переменной присвоить значение типа int
byte a = 100, b = 1, c; c = a*b/2; подскажите, пожалуйста, почему компилятор выдает здесь...

Присвоить переменной типа int значение, введенное в TextBox
как, куда и как прописать ToString ?

Как присвоить переменной типа int пустое значение?
как присвоить int переменной пустое значение. Не просто "0", а совсем пустоту

6
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
09.07.2013, 11:27 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;
}
0
4263 / 3322 / 925
Регистрация: 25.03.2012
Сообщений: 12,515
Записей в блоге: 1
09.07.2013, 11:32 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;
}
2
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
09.07.2013, 11:36 4
Цитата Сообщение от Vtulhu Посмотреть сообщение
Есть массив байт. Нужно выбрать из него четыре байта подряд (например, со второго по пятый) и вернуть как int.
Присвоить указателю на int адрес первого нужного байта в массиве.
Выставить ассерт "sizeof (int) == 4". Вспомнить про big endian / little endian.
1
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
09.07.2013, 11:40 5
Kuzia domovenok, буквально недавно думал над тем, что никогда не пользовался union, спасибо за хороший пример
0
20 / 20 / 2
Регистрация: 01.05.2012
Сообщений: 61
09.07.2013, 11:41 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;
}
0
17 / 15 / 0
Регистрация: 05.07.2013
Сообщений: 27
09.07.2013, 11:49 7
А такой вариант сойдет?
C++
1
2
3
int get_int(char* p, size_t pos) {
    return *reinterpret_cast<int*>(&p[pos]);
}
Подразумевается, что размер int - четыре байта.
0
09.07.2013, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2013, 11:49
Помогаю со студенческими работами здесь

Почему переменной типа int можно присвоить символьный элемент?
До сих пор не могу понять, почему переменной типа int в Си можно присвоить символьный элемент? Она...

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

Типы переменных (как в Qt присвоить значение переменной типа int строке QString?)
Добрый вечер! Возник вот такой вопрос: Как в Qt присвоить значение переменной типа int строке...

Как прочесть содержимое текстового файла хранимого в виде массива байт в переменной?
Писал автообновление для одной своей программы и для проверки последней верссии делал это: ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru