Kaip konvertuoti 4bytes į 4 atskiras baitų

E

engr.hayee

Guest
Labas,
Turiu 4byte data.i norite nutraukti šį 4byte duomenis į 4 (1byte) duomenys ir laikyti jį keturiais variables.how galiu padaryti, kad C.
Ačiū

 
Labas,

Ar galite pasakyti, kuris mikrovaldiklį naudojate?

Btw, galima naudoti kaukes 000F, 00F0 tada 8 pamainą, 0F00 su 16 ir F000 su pamainą 24 baitų poslinkis.

 
Labas,
Aš naudoju pic16f877a ir CCS C compiler (4,020).

 
Kaip AdvaRes jau pasakyta, galima naudoti baitas keičiasi

Kodastypedef char OneByteData;OneByteData DATA1, data2, data3, data4;

DATA1 = FourByteData & 0x000F;

data2 = (FourByteData>> 8) & 0x000F;

data3 = (FourByteData>> 16) & 0x000F;

data4 = (FourByteData>> 24) & 0x000F;

 
...arba, jei esate naudojant 8 bitų baitas, o ne 4-bit

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Mirkčiojimai" border="0" />

:
Kodastypedef unsigned char OneByteData;OneByteData DATA1, data2, data3, data4;

DATA1 = FourByteData & 0xFF;

data2 = (FourByteData>> 8) & 0xFF;

data3 = (FourByteData>> 16) & 0xFF;

data4 = (FourByteData>> 24) & 0xFF;

 
Teisingas

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Šypsotis" border="0" />
 
Šis darbai:

Kodas

# include <conio.h>

# include <stdio.h>

# include <stdlib.h>int main (void)

(

int = 0x45abcdef, I;

char b [] = (3, 4, 5, 6);

char * p;P = (char *) &a; / / Spausdinti medžiaga 32 bitų sveikasis adresą char rodyklė

for (i = 0; i <= 3; i )

(

b = R ;

)printf ( "% x% x% x% x \ n \ n", b [0], B [1], B [2], B [3]);

getch ();

return 0;

)

 
labas,

U taip pat galima naudoti SĄJUNGOS struktūra standartinėms C kalba.u will get it labai lengvai.tik tyrimo apie Sąjungą iš standartinėms C VadovėliaiTai klasikinis situacija, dėl kurių Sąjunga yra ten, standartinėms C kalbos ..............arnab/vu2bpw

 
Labas

Čia yra Sąjungos pavyzdys:

1) pripažinti, sąjunga

Sąjungoje (unsigned ilgai MyNumber / / Ilgas yra 4 baitų ilgiounsigned char byte [4];ByteConvert) / / gali būti daroma H failas2) sukurti RAM pavyzdžiui

ByteConvert Test; / / Tik. Failą C
3) Naudokite Sąjungą paversti ilgas iki 4 baitųTest.MyNumber = 1234;/ / prieiga unsigned char per SąjungaTest.Byte [0] / / surengs numeris 4;Test.Byte [1] / / surengs skaičius 3;Test.Byte [2] / / surengs numeris 2;Test.Byte [3] / / surengs numeris 1;
 
Hi Bobcat,U davė pavyzdžiui ---------------Test.MyNumber = 1234;
/ / prieiga unsigned char per Sąjunga
Test.Byte [0] / / surengs numeris 4;
Test.Byte [1] / / surengs skaičius 3;
Test.Byte [2] / / surengs numeris 2;
Test.Byte [3] / / surengs numeris 1;
I dont think tai yra teisė, tik ją patikrinti Prašome ....................................... .Sąjunga turi baitu vertes, bet tai įprotis LC 1.234 sumušė jį į 1,2,3,4, o mes jį gauti pirmą baitą, antroje, trečioje ir ketvirtoje baitas LC vertė 1.234 iš baitų Išminčius ..... ........................arnab/vu2bpw

 
del: D
Paskutinį kartą redagavo VSMVDD 09 Aug 2008 8:32; edited 3 kartus iš viso

 
Hi arnab

Taip.Jūs teisus

Jis misteak jis turėtų būti kaip tu sakai

Test.Byte [0] / / surengs pirmąjį bye;
Test.Byte [1] / / bus surengti 2. bye;;
Test.Byte [2] / / bus surengti 3. bye;;
Test.Byte [3] / / surengs 4. bye;;

Ačiū

Bobi

 
4bytes = LC 0xFFFFFFFF kaip Max
functKodasheader ..
main.h

# include <math.h>LC indata / / sveikojo skaičiaus laikymo 32bit vertė pažvelgti kompiliatorių pamatyti, kaip nustatyti 32bit Vals

Byte outdata [4]; / / masyvo reikšmių paskirtas konvertuoti funkcija

Byte convertedbyte / / konvertuoti vietoje baitų vertė ...

LC T / / diapazonas 0-3 ar kas ....

BOOL klaida; / / klaida bitų

////////////////////////////////

/ /: Case Logic apibrėžimai: / /

////////////////////////////////

# bylą

# ifndef TRUE

# define TRUE 1

# endif

# ifndef FALSE

# define FALSE 0

# endif

# ifndef TAIP

# define TAIP 1

# endif

# ifndef NE

# define NE 0

# endif

# ifndef DAUG

# define HIGH 1

# endif

# ifndef MAŽAI

# define maža 0

# endif

# ifndef ON

# define DĖL 1

# endif

# ifndef OFF

# define OFF 0

# endif

# ifndef viršų

# define UP 1

# endif

# ifndef DOWN

# define Down 0

# endif

# ifndef UCHAR

# define UCHAR CHAR

# endif

# ifndef UINT

# define UINT ilgai

# endif

# ifndef BIT

# define BIT trumpas

# endif

# ifndef Schar

# define Schar pasirašė LC

# endif

# ifndef Sint

# define Sint pasirašė ilgai

# endif

# ifndef plaustas

# define plaustas plūdė

# endif

/////////////////////////////////

/////////////////////////////////
convertclass.cppįtraukti main.h

t indata = 0;

outdata [0] = outdata [1] = outdata [2] = outdata [3] = 0x00;convert (BYTE * outdata [], LC indata)

(

* outdata [0] = (byte) indata;

* outdata [1] = (byte) (indata <<8);

* outdata [2] = (byte) (indata <16);

* outdata [3] = (byte) (indata <24);

return (TRUE);

)
 

Welcome to EDABoard.com

Sponsor

Back
Top