kā pārvērst 4bytes vērā 4 atsevišķas baiti

E

engr.hayee

Guest
Čau,
Man ir 4byte data.i vēlaties likvidēt šo 4byte datus 4 (1byte) datus un uzglabāt to četrās variables.how es varu darīt, ka C.
Pateicība

 
Čau,

Vai jūs varat man pateikt, kas mikrokontrolleru jūs izmantojat?

Btw, varat izmantot maska 000F, 00F0 tad pārmaiņas pēc 8, 0F00 ar pāreju pa 16 un F000 ar pāreju par 24 baitu.

 
Kā AdvaRes jau teikts, var izmantot baitu pāriet

Kods:typedef char OneByteData;OneByteData data1, data2, data3, data4;

data1 = FourByteData & 0x000F;

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

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

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

 
...vai, ja jūs izmantojat 8 bitu baits, nevis 4-bit

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Piemiedz ar aci" border="0" />

:
Kods:typedef unsigned char OneByteData;OneByteData data1, data2, data3, data4;

data1 = FourByteData & 0xFF;

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

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

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

 
Labais

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smaids" border="0" />
 
Tas darbojas:

Kods:

# include <conio.h>

# include <stdio.h>

# include <stdlib.h>int main (anulēts)

(

int = 0x45abcdef, i;

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

char * p;p = (char *) &a; / / typecast 32 bitu vesels skaitlis adresi char rādītājs

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

(

b = P ;

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

getch ();

return 0;

)

 
čau,

u var izmantot arī SAVIENĪBAS struktūru, standarta C valodā.u saņems ļoti viegli.tikai pētījumu par Savienību no standarta C mācību grāmatuTas ir klasisks situācija, par kuru Savienībai ir tur standarta C valodā ..............arnab/vu2bpw

 
Čau

Šeit ir savienība piemērs:

1) atzīt savienība

Savienībā (neparakstīts garš MyNumber; / / Long ir 4 baitu garumuunsigned char Byte [4];) ByteConvert; / / To var izdarīt H failu2) izveidot piemēram RAM

ByteConvert Test; / / Tikai. C failu
3) Izmantojiet savienība pārvērst ilgi 4 baituTest.MyNumber = 1234;/ / piekļūt unsigned char caur savienībaTest.Byte [0] / / rīkos skaits 4;Test.Byte [1] / / rīkos skaits 3;Test.Byte [2] / / rīkos numuru 2;Test.Byte [3] / / rīkos numuru 1;
 
hi Bobcat,u bija piemērs ---------------Test.MyNumber = 1234;
/ / piekļūt unsigned char caur savienība
Test.Byte [0] / / rīkos skaits 4;
Test.Byte [1] / / rīkos skaits 3;
Test.Byte [2] / / rīkos numuru 2;
Test.Byte [3] / / rīkos numuru 1;
i dont domāju, ka tas ir labi, tikai pārbaudīt, lūdzu, ....................................... .savienība uzskata baitu vērtības, bet int 1.234 to paradis break to 1,2,3,4 drīzāk mēs saņemam to pirmo baitu, otrā, trešā un ceturtā baits no int vērtība 1.234 ir baits gudrs ..... ........................arnab/vu2bpw

 
del: D
Last edited by VSMVDD 09 Aug 2008 8:32 labots 3 reizes kopā

 
Hi arnab

Jā.Jums ir taisnība

Tas bija misteak būtu kā jūs sakāt

Test.Byte [0] / / rīkos pirmo bye;
Test.Byte [1] / / rīkos 2. bye;;
Test.Byte [2] / / rīkos 3. bye;;
Test.Byte [3] / / rīkos 4. bye;;

Paldies

Bobi

 
4bytes = INT 0xFFFFFFFF kā max
functKods:header ..
main.h

# include <math.h>INT indata; / / integer turēšanai 32bit vērtība apskatīt kompilators, lai uzzinātu, kā noteikt 32bit VALS

BYTE outdata [4]; / / masīvs ar vērtībām, kas piešķirtas convert funkcija

BYTE convertedbyte; / / pārvērš uz vietas baits vērtība ...

INT t; / / intervāls 0-3 vai kāds ....

BOOL kļūda; / / kļūda bits

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

/ /: CASE LOGIC DEFINĪCIJAS: / /

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

# lietas

# ifndef TRUE

# define TRUE 1

# endif

# ifndef FALSE

# define FALSE 0

# endif

# ifndef JĀ

# define YES 1

# endif

# ifndef NO

# define NO 0

# endif

# ifndef HIGH

# define HIGH 1

# endif

# ifndef LOW

# define LOW 0

# endif

# ifndef ON

# define ON 1

# endif

# ifndef OFF

# define OFF 0

# endif

# ifndef UP

# define UP 1

# endif

# ifndef DOWN

# define DOWN 0

# endif

# ifndef UCHAR

# define UCHAR char

# endif

# ifndef UINT

# define UINT garš

# endif

# ifndef BIT

# define BIT īstermiņa

# endif

# ifndef Schär

# define Schär parakstīts int

# endif

# ifndef SINT

# define SINT parakstīja ilgtermiņa

# endif

# ifndef FLOAT

# define FLOAT pludiņš

# endif

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

/////////////////////////////////
convertclass.cppietvert main.h

t, indata = 0;

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

(

* outdata [0] = (baitu) 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