|
вопрос по memcpy |
|
|
|
Dec 2 2015, 07:16
|
Профессионал
    
Группа: Участник
Сообщений: 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}
|
|
|
|
|
 |
Ответов
|
Dec 2 2015, 08:58
|

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

|
Цитата(Jenya7 @ Dec 2 2015, 08:50)  то есть надо переворачивать исходный массив? а есть какой нибудь быстрый алгоритм перевернуть или ничего нового не придумали? А обязательно гонять данные по массиву туда-сюда ? Можно ли просто обращаться к его этементам в обратном порядке ? Быстрый алгоритм можно придумать для каких-нибудь частных случаев, типа только 4 элемента по байту каждый, учесть влияние кэша процессора итп.
|
|
|
|
|
Dec 2 2015, 09:01
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 2 2015, 09:17
|

Местный
  
Группа: Участник
Сообщений: 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 коллеги сходу бьют ссаными тряпками  - что будет, если аргумент size по какой-либо причине будет 0 ? - аргумент src должен быть const uint8_t* - аргумент dest желательно объявлять как void*
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|