"Překlopení" dat Byte

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: "Překlopení" dat Byte

Příspěvek od gilhad » 22 lis 2019, 12:35

Mam pole bx (jako prijatych bytu), je v nem 10 bytu (polozek) z te ctecky

Kdyz se nactou vsechny (proto je to az v if (citac>=10)), tak je preklopim z bytu na pismena odpovidajicich hexa zapisu (protoze to radsi udelam naraz s jednoduchou promennou i, nez bych to delal prubezne a pouzival promennou citac)

plnim pole cx (jako znaku odpovidajicim tomu vyjadreni tech bytu v HEXa - na 1 byte 2 znaky )

bx ma 10 polozek cislovanych od nuly, projdu to for cyklem s promennou i jako indexem.

v kazdem kroku vezmu bx (jako aktualni byte) a rozlozim ho na dva znaky, ktere prijdou na spravne misto v cx (2*i a 2*i+1)

Horni pulka bytu je ten byte posunuty o 4 do prava (bx >>4) a ciste pro sichr oriznuty na dolni 4 bity (& 0xF) - tim mi vyjde cislo v rozsahu 0..15 0000..1111 binarne

ToHex je pole se 16 znaky, odpovidajicimi 10 hexa kodum pro tato cisla - takze z nej vezmu patricny znak ( '0' pro nulu az 'F' pro 15) a jako pismeno ho vlozim na spravne misto do toho cx (tedy na index 2*i)

Na dalsi misto v cx (cili index 2*i+1) dam dolni pulku toho bx (cili vyriznu to znej bitovym soucinem s 0xF=1111) zase prevedenou na znak pomoci pole ToHex

----

Jinymi slovy - projdu nactene byty, kazdy rozdelim na horni a dolni pulku, tu prevedu na pismeno a vlozim do pole cx, tak, aby vyssi rad byl nejdriv a nixsi za nim.

----

no a pak uz mam v cx HEX vyjadreni toho, co jsem prijal, ulozene jako znaky, tak si v tom dalsim cyklu vyberu jen ty zajimave (9..12) a poslu si je na Serial a odradkuju. (nebo si vyber jake chces a delej si s nima co chces)

---

no a samozrejme bych to mohl delat prubezne a po znacich a usetrit par bytu a krasne to zneprehlednit, ale pocitam, ze to chces jako soucast neceho vetsiho, tak jsem to radsi rozepsal, aby bylo videt co a jak delam a snadno se s tim dal pracovalo

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

Re: "Překlopení" dat Byte

Příspěvek od gilhad » 22 lis 2019, 12:46

Jinak kiRRow ma samozrejme taky pravdu, jde jen o styl - ja tam radsi mam to oriznuti, ktere zaruci, ze to z toho pole nevyleze a prijde mi to vic didakticke (ackoli to ted vyjde, tak kdyby se ten trik pouzil na vetsi promenne (jako int, long, ...), tak by i po tom posunu tam mohl byt ten zbytek jeste velky

A misto, abych prevadel ty pulbyty nejakym vypoctem, tak jsem je pouzil jako index v poli ToHex, kde mam uskladnena pismena, ktera jim odpovidaji

vodny86
Příspěvky: 13
Registrován: 18 lis 2019, 15:31
Reputation: 0

Re: "Překlopení" dat Byte

Příspěvek od vodny86 » 22 lis 2019, 14:09

Už tomu plně rozumím, moc děkuji.

Jen nerozumím tomu, že to někdo vymyslel, že taková konstrukce někoho napadne a to je určitě ještě dost jednoduché... Prostě posunutí bitů + aplikace AND s tím, že mi to dá index na připravené pole, to je prostě :twisted: :twisted:

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

Re: "Překlopení" dat Byte

Příspěvek od kiRRow » 22 lis 2019, 14:20

To jsou totiž tak základní operace, že se k nim dostaneš až později, protože na všechno jsou dneska knihovny, které tohle řeší za tebe.

Já třeba řešil odchylku měření, uměl jsem si ji na začátku zjistit a nakonci ji k výsledku přičíst nebo odečíst, podle toho jestli ta odchylka byla kladná nebo záporná. Sestrojil jsem prasáckej progam, který nejprve zjišťoval jestli je to větší menší než nula ... pak z toho dudlal absolutní hodnotu čísla a tu pak přičítal a nebo odečítal podle toho jestli bla větší nebo menší než nula ..... a druhej den ráno jsem to smazal, protože v podřimování večer mi cvaklo v hlavě, že to vlastně stačí vynásobit odchylku -1 a přičíst k výsledku

vodny86
Příspěvky: 13
Registrován: 18 lis 2019, 15:31
Reputation: 0

Re: "Překlopení" dat Byte

Příspěvek od vodny86 » 22 lis 2019, 14:39

To budeš mít určitě pravdu. Ty knihovny jsou absolutní základ a dávají tak do ruky dost silný nástroj pro jednoduché projekty, nicméně když tam máš pak něco poupravit, tak jsi v háji a pak vlastně zjišťuješ, co se v těch knihovnách děje a tam ji v lese protože se tam objeví něco jako bitový posun atp.

Nicméně to nemění nic na tom, že tě ta konstrukce musí trknout.

Taky by to chtělo nějaký jiný prostředí než to IDE co je klasika u Arduina. Ocenil bych možnost krokování v průběhu programu + zobrazení co v které promněné je zrovna uložené a co se děje. Plus nějaké našeptávání by bodlo.

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

Re: "Překlopení" dat Byte

Příspěvek od kiRRow » 22 lis 2019, 15:54

knihovny jsou fajn ... nevyděsí to nováčka, protože před ním skrývají fakt, že programuje :D

Odpovědět

Kdo je online

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