Toon posts:

[C++] Hex naar bin.. in array

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben op zoek naar een routine die van een char (bijv: cChar = 0x55) naar een binair getal converteerd (dus 0x55 --> 01010101) en die in een array plaatst:

cArray[0] = 1
cArray[1] = 0
cArray[2] = 1
cArray[3] = 0
cArray[4] = 1
cArray[5] = 0
cArray[6] = 1
cArray[7] = 0

Ik gebruik Borland C++ Builder 5.. Ik zat zelf te denken iets van Char-->Bin-->String.. Maar hoe pak ik dit slim aan..??

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

C++:
1
2
3
4
5
6
7
8
9
void ConvertValueToArray(int p_Value, char* p_Array, int p_ArraySize)
{
int l_Index;
for(l_Index = 0; l_Index != p_ArraySize; l_Index++)
  {
  p_Array[l_Index] = p_Value & 1;
  p_Value >>= 1;
  }
}

Professionele website nodig?


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Waar zie je een probleem? Loop alle bitjes af en stop ze in een array.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Perfect..! Heb je er ook een van ArrayToValue..?? ;)
superbedankt voor je snelle reactie overigens..!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

je zou zelf ook eens wat kunnen proberen natuurlijk... of proberen de code van curry te begrijpen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Zie oisyn, ik klopte dit stukje code uit het blote hoofd direct in in de browser, in de bedoeling dat je daarmee het Logische Licht zou zien :) Als je om de code had gevraagd had ik 'm niet gegeven overigens maar het topic gesloten :Y)

Professionele website nodig?


Verwijderd

Topicstarter
Hmm.. Voor elk component uit de array met de zoveelste macht van 2 vermenigvuldigen (dan heb je een int); optellen; en dan met een een hex-functie (itoa()) een char van maken.. Ofzoiets..??

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
probeer nou eerst eens...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Logischer nadenken, je komt er wel :) Begin eens met het stap voor stap analyseren wat ik in mijn functie doen, en dan de stapjes andersom uit te schrijven.

Professionele website nodig?


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

curry684 schreef op 20 juni 2003 @ 11:36:
C++:
1
2
3
4
5
6
7
8
9
void ConvertValueToArray(int p_Value, char* p_Array, int p_ArraySize)
{
int l_Index;
for(l_Index = 0; l_Index != p_ArraySize; l_Index++)
  {
  p_Array[l_Index] = p_Value & 1;
  p_Value >>= 1;
  }
}
p_Value >>= 1; is dit gewoon van de iostream.h ik bedoel kun je zo de waarde aan p_Value toekennen?

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

koli-man mag ook terug naar de schoolbankjes :+

Professionele website nodig?


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

tja..in Stroustrup vond ik hem niet zo snel ;)

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
code:
1
std::bitset<CHAR_BIT> array( cChar );

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Hmm.. en andersom..:

Ik geef echter een multidimansionale array in:
dus eehh:
unsigned int aiCharArray[2][3] = {{0,0,1}{1,0,1}}
Moet worden: aiResultaat = {0x3,0x5}

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
unsigned int iConvertArrayToValue(unsigned int* aiArray, 
                                      unsigned int iArraySize)
{
  unsigned int iValue=0;

  for(unsigned int i = 0; i <= iArraySize; i++)
  {
    iValue = iValue + ldexp(aiArray[i], i);
  }
  return iValue;
}

//En dan bij aanroep:
...
 for (int p = 0; p<2; p++)
  {
    aiResultaat[p]=iConvertArrayToValue(aiCharArray[3], 2);
  }
...


Maar dit werkt niet.... Ziet iemand wat ik fout doe..??

[ Voor 7% gewijzigd door Verwijderd op 26-06-2003 15:59 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

uhm
unsigned int aiCharArray[2][3] = {{0,0,1}{1,0,1}}

en

aiResultaat[p]=iConvertArrayToValue(aiCharArray[3], 2);

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ahja.. ok.. Maar de hele array wordt niet goed doorgegeven.. Ik krijg allemaal hele grote integers in dat resultaatarray..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja, omdat je dus een stuk ongeldig geheugen meegeeft (de tweede dimensie van aiCharArray is gedeclareerd als 2 elementen groot. En dat terwijl je element 3 meegeeft. Waarschijnlijk moest daar een p staan ipv een 3)

Overigens kun je 2x ook makkelijk berekenen door 1 << x te doen (eigenlijk kun je x << y zien als de integer-variant van ldexp (x, y))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
[3] is hetr vierde element, overigens. [0] is het eerste element etc.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1