Size: a a a

2021 January 25

СС

Сиие Сууие in Embedded Group
Electronics Designer
Кстати, я так подумал, можно ведь как сделать... Ну, чисто ради красоты.

uint8_t array[N];

uint16_t *ptr;

ptr = (uint16_t *)((void *)array);

...

array[k] = ...

ptr[j] = ...

Вот так должно работать. :)
это для чего?
источник

ED

Electronics Designer in Embedded Group
В смысле? Там выше была задача по доступу к элементам байтового массива как к int16.
источник

ED

Electronics Designer in Embedded Group
Но сам я голосую за метод со сдвигами.
источник

ED

Electronics Designer in Embedded Group
Просто подумал, как это можно сделать с указателями. С указателями прикольно, а со сдвигами - предсказуемо и переносимо.
источник

СС

Сиие Сууие in Embedded Group
Electronics Designer
В смысле? Там выше была задача по доступу к элементам байтового массива как к int16.
я просто пропустил задачу
источник

ED

Electronics Designer in Embedded Group
А, ну вот да, была.
источник

СС

Сиие Сууие in Embedded Group
Electronics Designer
Но сам я голосую за метод со сдвигами.
со сдвигами это типа
a= (b[20*2]<<8) ||(b[20*2+1])
источник

ED

Electronics Designer in Embedded Group
Типа того.
источник

ED

Electronics Designer in Embedded Group
Только |
источник

СС

Сиие Сууие in Embedded Group
Electronics Designer
Типа того.
тогда переносимо в границе одной -эндиан системы
источник

ED

Electronics Designer in Embedded Group
Это решается макросами и проверкой дефайнов. :)
источник

СС

Сиие Сууие in Embedded Group
Electronics Designer
Кстати, я так подумал, можно ведь как сделать... Ну, чисто ради красоты.

uint8_t array[N];

uint16_t *ptr;

ptr = (uint16_t *)((void *)array);

...

array[k] = ...

ptr[j] = ...

Вот так должно работать. :)
вот так лучше или массив обявлять 16 разрядный, а указатель 8ми, или же выравнивани5е на 8 разрядный задать в 16
источник

r

romanetz in Embedded Group
Сиие Сууие
тогда переносимо в границе одной -эндиан системы
Вы давно BE вообще встречали вживую?
источник

r

romanetz in Embedded Group
Интел, арм, мипс - все LE
источник

СС

Сиие Сууие in Embedded Group
romanetz
Вы давно BE вообще встречали вживую?
нет, вот летом еб*ался
источник

s

shadowsoul in Embedded Group
romanetz
Вы давно BE вообще встречали вживую?
поверпесец, бска в спальне лежит)
источник

r

romanetz in Embedded Group
Ну тогда сдвиги писать и надеяться на компилятор )
источник

r

romanetz in Embedded Group
Кстати, в том же арме они аппаратные
источник

P

Ponytale 🇷🇺 in Embedded Group
Electronics Designer
Кстати интересно посмотреть дизассемблер версии на сдвигах.
uint16_t fletcher = (((uint16_t)buf[22]) << 8) | buf[23];
lds r18,buf+22
lds r22,buf+23
mov r25,r18
ldi r24,lo8(0)
ldi r23,lo8(0)
or r22,r24
or r23,r25
ldi r24,lo8(0)
ldi r25,hi8(0)

uint16_t fletcher = *((uint16_t *) &buf[22]);
lds r22,buf+22
lds r23,buf+22+1
источник

P

Ponytale 🇷🇺 in Embedded Group
Electronics Designer
У меня есть сильное чувство, что оптимизатор превратил сдвиги в доступ по указателю.
да
источник