Stránka 1 z 2

3 byte to long

Napsal: 30 pro 2022, 10:50
od Ludek
Zdravím před Silvestrem.
prosím o radu, nemohu dát dohromady číslo a nevím, jak s tím.
Jde mi o nastavení proměnné pro barvu WS2812, kterou chci tvořit z proměnných
mám byte RR (0 - 255) a to samé byte GG a byte BB - jako to udělat aby výsledek byl COLOR = 0xRRGGBB
díky

Re: 3 byte to long

Napsal: 30 pro 2022, 11:24
od jankop

Kód: Vybrat vše

unsigned long COLOR=RR*65536+GG*256+BB;

Re: 3 byte to long

Napsal: 30 pro 2022, 12:10
od Ludek
Jejda... jdu to zkusit
dík

Re: 3 byte to long

Napsal: 30 pro 2022, 12:50
od Ludek
OJ KDE MÁM CHYBU?
Ty byte mám RR=0xAA GG=0xBB BB=0xCC
a výsledek je :
0xA9BBCC
:-(

Re: 3 byte to long

Napsal: 30 pro 2022, 13:15
od jankop
Nejspíš špatně opsané
hex.jpg

Re: 3 byte to long

Napsal: 30 pro 2022, 13:35
od Ludek
HA HEUREKA !
já to měl jako byte, to nefungovalo, pak jako int, to taky nefungovalo.
Díky za radu - s uint16_t to šlape :-) asi se to nikdy nenaučím, co se k sobě hodí za formáty.
Tak hezkého Silvestra !

Re: 3 byte to long

Napsal: 30 pro 2022, 14:55
od gilhad
Já osobně cítím jako intuitivnější takovýto zápis :-)

Kód: Vybrat vše

unsigned long COLOR=RR*0x10000+GG*0x100+BB;

Re: 3 byte to long

Napsal: 30 pro 2022, 16:08
od kiRRow
Další způsob jak to tam naládovat je pomocí bitových posuvů

Kód: Vybrat vše

unsigned long COLOR = ((RR<<8)+GG<<8)+BB;

Re: 3 byte to long

Napsal: 30 pro 2022, 17:49
od jankop
Ludek píše:
30 pro 2022, 13:35
HA HEUREKA !
Díky za radu - s uint16_t to šlape :-) asi se to nikdy nenaučím, co se k sobě hodí za formáty.
Tak hezkého Silvestra !
uint16_t je totéž jako unsigned integer
Je to jen zkrácený zápis. Nehledej v tom nic jiného.

Re: 3 byte to long

Napsal: 30 pro 2022, 17:57
od AstroMiK
Není "uint16_t" málo, když se tam má nacpat 24-bitové číslo?