Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

DWORD pointer to char

Pagina: 1
Acties:

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
Ik wil de inhoud van een DWORD pointer omzetten na een char,
Dan wil ik de eerste 2 charecters vervangen door bvb 12.

De DWORD pointer heeft de waarde: as73js83
Die moet dus 1273js83 worden.

Ik heb voor converten sprintf geprobeert alleen dat lukt niet.
Ik krijg dan "crap"

Als het programma uitvoer:

1252608 <<geconverte Dword na char
as73js83 << Dword

Iemand een idee hoe ik dit anders kan converten?

Edit: om de crap te voorkomen heb ik de Char de waarde 0 gegeven. alleen elke keer krijgt hij die getallen weer.

[ Voor 12% gewijzigd door lauwsa op 28-08-2010 15:28 ]


  • danslo
  • Registratie: Januari 2003
  • Laatst online: 19:37
Heb je wat voorbeeld code? Ik snap namelijk helemaal niks van je (vage) verhaal.

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:03

Matis

Rubber Rocket

Ik snap niet hoe een pointer naar een DWORD non-hexadecimale waardes kan bevatten :?

If money talks then I'm a mime
If time is money then I'm out of time


  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
Ow sorry,

a<< Dword met as73js83
code:
1
2
3
4
5
    char buffer[9] = "";
    sprintf(Buffer,"%u",a); //convert DWORD naar CHAR

    cout << a << "\n"; // output de waarde van de DWORD (as73js83)
    cout << buffer; //output de waarde van CHAR (234525)


Edit, dit was gewoon een crapy voorbeeld :P
De DWORD bevat een aderes. En ik wil de eerst 2 charecters door 0x vervangen.

Edit2: Alleen het converten lukt me niet.
Ik doe dit zo want ik zou niet weten hoe ik de eerste 2 kan vervangen door 0x.

[ Voor 33% gewijzigd door lauwsa op 28-08-2010 15:37 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je moet je DWORD niet converteren naar een char maar je DWORD point casten naar een char pointer. Verder is het gewoon een kwestie van de tekens op index 0 en 1 aanpassen. Ik zie het probleem niet zo? :?
lauwsa schreef op zaterdag 28 augustus 2010 @ 15:36:
Ow sorry,

a<< Dword met as73js83
code:
1
2
3
4
5
    char buffer[9] = "";
    sprintf(Buffer,"%u",a); //convert DWORD naar CHAR

    cout << a << "\n"; // output de waarde van de DWORD (as73js83)
    cout << buffer; //output de waarde van CHAR (234525)


Edit, dit was gewoon een crapy voorbeeld :P
De DWORD bevat een aderes. En ik wil de eerst 2 charecters door 0x vervangen.

Edit2: Alleen het converten lukt me niet.
Ik doe dit zo want ik zou niet weten hoe ik de eerste 2 kan vervangen door 0x.
Vind je het gek dat je een cijfer krijgt als je de inhoud van je DWORD als unsigned int laat afdrukken in een string? Hoe wil je in godesnaam een "j" of een "s" daarin krijgen? En hoe krijg je die zoals al eerder gevraagd überhaupt in een DWORD?

[ Voor 68% gewijzigd door NMe op 28-08-2010 15:39 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
Oww van daar :P
Dus ik moet DWORD point casten naar een char pointer.

ff google hoe ik dat moet doen.

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 19:37
En als toevoeging op NMe; waarom zou je uberhaupt de eerste 2 tekens moeten aanpassen. Gooi gewoon 0x voor die %u in je sprintf? Ik denk dat je je misschien wat meer in de taal moet gaan verdiepen, zijn namelijk wel heel erg basic vragen.

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
en dan nog de 1ste 2 charecters weg halen ;) want die heb ik niet nodig.
ik weet het ben nog niet zo heel erg ervaren.

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
@NMe, dat was een crapy voorbeeld maar me DWORD is een address

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:03

Matis

Rubber Rocket

In dat geval moet je dus de geheugenlocatie van DWORD overschrijven met een 1 en de DWORD+1 geheugenlocatie overschrijven met een 2.

Een fatsoenlijke debugger laat ook keurig zien hoe die desbetreffende geheugenlocatie eruit ziet :)

If money talks then I'm a mime
If time is money then I'm out of time


  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 29-11 08:50

CoolGamer

What is it? Dragons?

Weet je wel zeker dat je goed bezig bent? Als een functie een string geeft wordt meestal een LPTSTR teruggegeven, niet een DWORD.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

lauwsa schreef op zaterdag 28 augustus 2010 @ 15:45:
@NMe, dat was een crapy voorbeeld maar me DWORD is een address
Leuk, maar dat adres is dus een integer. Als er 0xff staat, dan is dat niet meer dan het getal 255. Zie ook Programming FAQ - Getallen en talstelsels. Je hébt dus al een adres. Dat jij die integerwaarde naar een hexadecimale representatie wil vertalen heeft niets met converteren te maken en is een heel ander probleem.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 24-11 08:40
Denk dat jullie gelijk hebben en door moet gaan leren voordat ik veel dingen in de practijk uit ga voeren
Anders heb ik veel te veel vragen ;)

Bedankt
Pagina: 1