3 byte to long

Ludek
Příspěvky: 208
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

3 byte to long

Příspěvek od Ludek » 30 pro 2022, 10:50

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

jankop
Příspěvky: 995
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: 3 byte to long

Příspěvek od jankop » 30 pro 2022, 11:24

Kód: Vybrat vše

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

Ludek
Příspěvky: 208
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: 3 byte to long

Příspěvek od Ludek » 30 pro 2022, 12:10

Jejda... jdu to zkusit
dík

Ludek
Příspěvky: 208
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: 3 byte to long

Příspěvek od Ludek » 30 pro 2022, 12:50

OJ KDE MÁM CHYBU?
Ty byte mám RR=0xAA GG=0xBB BB=0xCC
a výsledek je :
0xA9BBCC
:-(

jankop
Příspěvky: 995
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: 3 byte to long

Příspěvek od jankop » 30 pro 2022, 13:15

Nejspíš špatně opsané
hex.jpg

Ludek
Příspěvky: 208
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: 3 byte to long

Příspěvek od Ludek » 30 pro 2022, 13:35

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 !

Uživatelský avatar
gilhad
Příspěvky: 663
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: 3 byte to long

Příspěvek od gilhad » 30 pro 2022, 14:55

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;

Uživatelský avatar
kiRRow
Příspěvky: 978
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: 3 byte to long

Příspěvek od kiRRow » 30 pro 2022, 16:08

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;

jankop
Příspěvky: 995
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: 3 byte to long

Příspěvek od jankop » 30 pro 2022, 17:49

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.

AstroMiK
Příspěvky: 542
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: 3 byte to long

Příspěvek od AstroMiK » 30 pro 2022, 17:57

Není "uint16_t" málo, když se tam má nacpat 24-bitové číslo?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host