Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 526
Записей в блоге: 1
1

uchar array to uint16 array

04.12.2019, 12:33. Показов 1653. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
Подскажите, вот у меня есть массив байтов(передаю через указатель unsigned char*), а мне нужно сгруппирововать их в массив по 2 байта:
A B C D -> AB CD.
То есть был массив размерностью 100(uchar), а стал 50(uint16).
Пробовал присвоить значение через передачу адреса указателя на uint16, но так не получается, пишет:
error: cannot initialize a variable of type 'int16_t *' (aka 'short *') with an rvalue of type 'unsigned char **'
Подскажите, можно ли обойтись без "перекладывания" и инициализации нового массива uint16?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2019, 12:33
Ответы с готовыми решениями:

Присвоить значения переменных в массив Array (class Array в Turbo C++)
Здравствуйте!!! Изучаю help в Turbo C++ 3.1 дошел до класса Array: main() { //при ...

Двумерный массив <array>. const int value = array.size(); value не константа?
#include &lt;array&gt; #include &lt;iostream&gt; using std::array; using std::cout; /*ФУНКЦИЯ...

Расстановка девяти чисел (Turbo C) Выводит ошибку using Matrix = std::array<std::array<int, 3>, 3>; и bool NextSet
#include &lt;iostream&gt; #include &lt;array&gt; using Matrix = std::array&lt;std::array&lt;int, 3&gt;, 3&gt;; //...

array<array<>> == T[][] ?
Подскажите, плиз, Можно ли привести std::array&lt;array&lt;int,3&gt;,3&gt; к std::array&lt;int,9&gt;? Т.е....

4
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
04.12.2019, 12:49 2
Лучший ответ Сообщение было отмечено Robesper3411 как решение

Решение

Цитата Сообщение от Robesper3411 Посмотреть сообщение
То есть был массив размерностью 100(uchar), а стал 50(uint16).
конвертировать массив одного типа в массив другого типа нельзя, можно работать с массивом одного типа как с массивом другого типа:
C++
1
2
3
4
5
6
7
8
9
#include <cstdint>
 
int main()
{
    unsigned char a[] {1, 2};
    std::uint16_t* p = reinterpret_cast<std::uint16_t*>(a); // говорят опасно и не переносимо!!!
 
    return 0;
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
04.12.2019, 13:59 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
union A
{
   unsigned char uc[100];
   unsigned short us[50];
};
int main()
{
   A a;
   for(int i=0;i<100;i++)
      a.uc[i]=rand()%256;
   for(int i=0;i<50;i++)
     cout<<a.us[i]<<' ';
}
2
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
04.12.2019, 14:29 4
C++
1
2
3
4
5
    unsigned char uc[100]{'7'};
 
    std::wstring w(std::begin(uc),std::end(uc));
 
    //w - результат
ну или

C++
1
std::vector<int16_t> v16(std::begin(uc),std::end(uc));
Добавлено через 6 минут
но это для статического массива. Для не статического unsigned char* uc нужно передать аргументы:

1) uc
2) uc+количество_элементов
1
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 526
Записей в блоге: 1
04.12.2019, 14:57  [ТС] 5
Цитата Сообщение от _stanislav Посмотреть сообщение
// говорят опасно и не переносимо!!!
Вы поняли мою мысль. Но это как раз то, что мне нужно.
Пока что это делается временно (хотя, как известно, нет ничего более постоянного) - для тестов. Потом предполагается сделать по-человечески.
0
04.12.2019, 14:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2019, 14:57
Помогаю со студенческими работами здесь

Array
Кто может помочь с составлением массива по такому требованию: Создать одноизмеримый массив, найти...

2d ---> 1d array и memcpy
Можно ли сконвертировать двумерный массив в одномерный с помощью memcpy? Если да, то будет ли...

массив <array>
Вобщем такая тема. Задали лабу, где надо использовать последовательный контейнер фиксированного...

задача на Array
Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания...


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

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