Získání horního a dolního bajtu 16ti bitové proměnné – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Získání horního a dolního bajtu 16ti bitové proměnné – C / C++ – Fórum – Programujte.comZískání horního a dolního bajtu 16ti bitové proměnné – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
dzenda10
Duch
21. 5. 2008   #1
-
0
-

Ahoj, mam takový problém, potřebuju rozdělit proměnnou typu unsigned int (16 bitů) na dvě čísla tvořená horním a dolním bajtem této proměnné. neznáte někdo funkci která to umí? Předem díky za rady.

Nahlásit jako SPAM
IP: 83.240.14.–
Reklama
Reklama
Jura
~ Anonymní uživatel
634 příspěvků
21. 5. 2008   #2
-
0
-

Viz. např. MSDN




#define BYTE unsigned char

#define HIBYTE(w) ((BYTE) (((WORD) (w) >> 8) & 0xFF))
#define LOBYTE(w) ((BYTE) (w))

Nahlásit jako SPAM
IP: 85.207.192.–
Jura
~ Anonymní uživatel
634 příspěvků
21. 5. 2008   #3
-
0
-

A ješte ten WORD , což je unsigned int short nebo (unsigned __int16)

Nahlásit jako SPAM
IP: 85.207.192.–
dzenda10
Duch
22. 5. 2008   #4
-
0
-

To Jura : Jsem začátečník a tomuto zápisu moc nerozumim. předpokládam že když to takle nadefinuju tak potom stačí v průběhu programu zadat HIBYTE(proměnná) a to mi vrátí horní bajt proměnné?

Nahlásit jako SPAM
IP: 83.240.14.–
yaqwsx+9
Posthunter
22. 5. 2008   #5
-
0
-

To dzenda1 : Ano stačí to takhle nadefinovat. Jinak nevím proč Jura použil #define zápis místo přehlednější f-ce(ať už inline nebo ne)



typedef (unsigned char) BYTE;
typedef (unsigned int) WORD;
inline BYTE HIBYTE( WORD w) { return BYTE(((w >>8) & 0xFF));}
inline BYTE LOBYTE (WORD w) {return BYTE (w);}

Doufám, že jsem to přepsal dobře...

EDIT: Tak jsem si opravil středník a díky za upozornění AdamHlavatovic (radši jsme to ani neskloňoval, nerad bych to nějak zkomolil)

Nahlásit jako SPAM
IP: 85.160.66.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
AdamHlavatovic0
Stálý člen
22. 5. 2008   #6
-
0
-

oprava:

inline BYTE LOBYTE (WORD w) {return BYTE(w);}

Nahlásit jako SPAM
IP: 217.73.16.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 82 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý