реклама на сайте
подробности

 
 
> вопрос по memcpy
Jenya7
сообщение Dec 2 2015, 07:16
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



функция копирует с младшего байта в младший байт. а нельзя как нибудь начиная со старшего байта в младший байт?
то есть сейчас
Код
dest[] = {0}
src[] = {1,2,3,4,5}
memcpy(dest,src,5);

и после выполнения
Код
dest = {1,2,3,4,5}

а я хочу
Код
dest = {5,4,3,2,1}



Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Dec 2 2015, 07:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Стандартно - нельзя
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 2 2015, 08:50
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(aaarrr @ Dec 2 2015, 13:17) *
Стандартно - нельзя

то есть надо переворачивать исходный массив? а есть какой нибудь быстрый алгоритм перевернуть или ничего нового не придумали?
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Dec 2 2015, 08:58
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(Jenya7 @ Dec 2 2015, 08:50) *
то есть надо переворачивать исходный массив? а есть какой нибудь быстрый алгоритм перевернуть или ничего нового не придумали?


А обязательно гонять данные по массиву туда-сюда ? Можно ли просто обращаться к его этементам в обратном порядке ?
Быстрый алгоритм можно придумать для каких-нибудь частных случаев, типа только 4 элемента по байту каждый, учесть влияние кэша процессора итп.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 2 2015, 09:01
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(CrimsonPig @ Dec 2 2015, 14:58) *
А обязательно гонять данные по массиву туда-сюда ? Можно ли просто обращаться к его этементам в обратном порядке ?
Быстрый алгоритм можно придумать для каких-нибудь частных случаев, типа только 4 элемента по байту каждый, учесть влияние кэша процессора итп.

тоже вариант
нет. функция посылки тоже начинает с младшего байта. лучше сразу перевернуть, быстрее будет.
Код
void ReverseArray(uint8_t *dest, uint8_t *src, uint32_t size)
{
    int i,j;
    for (i = (size - 1), j = 0; i >= 0; i--, j++)
          dest[j] = src[i];
}


Сообщение отредактировал Jenya7 - Dec 2 2015, 09:05
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Dec 2 2015, 09:17
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(Jenya7 @ Dec 2 2015, 09:01) *
Код
void ReverseArray(uint8_t *dest, uint8_t *src, uint32_t size)
{
    int i,j;
    for (i = (size - 1), j = 0; i >= 0; i--, j++)
          dest[j] = src[i];
}


За такой код на code review коллеги сходу бьют ссаными тряпками sm.gif
- что будет, если аргумент size по какой-либо причине будет 0 ?
- аргумент src должен быть const uint8_t*
- аргумент dest желательно объявлять как void*

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   вопрос по memcpy   Dec 2 2015, 07:16
|- - Jenya7   Цитата(CrimsonPig @ Dec 2 2015, 15:17) За...   Dec 2 2015, 09:32
|- - CrimsonPig   Цитата(Jenya7 @ Dec 2 2015, 09:32) я не и...   Dec 2 2015, 09:35
|- - zltigo   QUOTE (CrimsonPig @ Dec 2 2015, 11:35) Ст...   Dec 2 2015, 10:13
|- - CrimsonPig   Цитата(zltigo @ Dec 2 2015, 10:13) Не мен...   Dec 2 2015, 10:26
|- - zltigo   QUOTE (CrimsonPig @ Dec 2 2015, 12:26) ко...   Dec 2 2015, 10:31
|- - CrimsonPig   Цитата(zltigo @ Dec 2 2015, 10:31) Это ес...   Dec 2 2015, 10:42
|- - zltigo   QUOTE (CrimsonPig @ Dec 2 2015, 12:42) Эт...   Dec 2 2015, 10:51
- - smalcom   Кодvoid ReverseArray(uint8_t* pDestArr, uint8_...   Dec 2 2015, 10:45
|- - Сергей Борщ   Цитата(smalcom @ Dec 2 2015, 13:45) Да, о...   Dec 2 2015, 10:55
||- - CrimsonPig   Цитата(Сергей Борщ @ Dec 2 2015, 10:55) Д...   Dec 2 2015, 11:12
||- - Сергей Борщ   Цитата(CrimsonPig @ Dec 2 2015, 14:12) до...   Dec 2 2015, 11:18
|||- - Jenya7   Цитата(Сергей Борщ @ Dec 2 2015, 17:18) m...   Dec 2 2015, 11:46
|||- - Сергей Борщ   Цитата(Jenya7 @ Dec 2 2015, 14:46) вылета...   Dec 2 2015, 11:55
|||- - CrimsonPig   Цитата(Сергей Борщ @ Dec 2 2015, 11:55) Г...   Dec 2 2015, 12:37
|||- - Jenya7   Цитата(Сергей Борщ @ Dec 2 2015, 17:55) Г...   Dec 2 2015, 13:02
||- - zltigo   QUOTE (CrimsonPig @ Dec 2 2015, 13:12) до...   Dec 2 2015, 12:22
|- - Jenya7   ok...надо подумать...   Dec 2 2015, 11:35
|- - CrimsonPig   Цитата(Jenya7 @ Dec 2 2015, 11:35) спасиб...   Dec 2 2015, 11:40
- - smalcom   Цитатаdo { } while(--pSize) заменить на while(pSiz...   Dec 2 2015, 13:07
|- - CrimsonPig   Цитата(smalcom @ Dec 2 2015, 13:07) это з...   Dec 2 2015, 13:39
||- - smalcom   Цитата(CrimsonPig @ Dec 2 2015, 15:39) Та...   Dec 2 2015, 14:28
|- - Сергей Борщ   Цитата(Jenya7 @ Dec 2 2015, 16:02) я поня...   Dec 2 2015, 14:59
- - Mahagam   а как любители ассертов ассертят то, что src и dst...   Dec 2 2015, 15:20
|- - CrimsonPig   Цитата(Mahagam @ Dec 2 2015, 15:20) а как...   Dec 2 2015, 16:06
- - smalcom   Исходник Кодint main() { volatile int ps1 ...   Dec 3 2015, 00:24
|- - jcxz   Цитата(smalcom @ Dec 3 2015, 06:24) прогр...   Dec 3 2015, 03:58
|- - Сергей Борщ   Цитата(smalcom @ Dec 3 2015, 03:24) Исход...   Dec 3 2015, 13:25
- - smalcom   ЦитатаВы предлагаете не использовать assert-ы и ту...   Dec 3 2015, 10:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 01:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016