• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2204
  • Last Modified:

Converting a DWORD into a CHAR array

Ok, I'm going to try to be as clear as possible:

I've got a DWORD, with a value in, which I'm going to assume is 0x441C0010 for this example (it can be anything though). I need to convert it so that it becomes a series of 4 bytes in a char array,so that the first 2 bytes, are the first character's ascii code, the 2nd two are the second character's ascii code etc.

E.g.:

0x441C0010 would become:
myChar[0] = 0x44
myChar[1] = 0x1C
myChar[2] = 0x00
myChar[3] = 0x10

another example:

0x12345678 would become:
myChar[0] = 0x12
myChar[1] = 0x34
myChar[2] = 0x56
myChar[3] = 0x78

Note, those are single characters, and I'd like it done in fairly basic C++ (if possible!).

Many many thanks if you can help!

eAi
0
eAi2k
Asked:
eAi2k
  • 2
2 Solutions
 
AlexFMCommented:
DWORD dw;
char myChar [4];

DWORDToChar(&dw, myChar);

void DWORDToChar(DWORD* pDWORD, char* pChar)
{
    char* p = (char*) pDWORD;

    for ( int i = 0; i < 4; i++ )
        *pChar++ = *p++;
}
0
 
eAi2kAuthor Commented:
I managed to fix this problem myself very simply, by just doing:

char myVariable[3]
myVariable[3] = myDword;
myVariable[2] = (myDword >> 8);
myVariable[1] = (myDword >> 16);
myVariable[0] = (myDword >> 24);

eAi
0
 
itsmeandnobodyelseCommented:
>> char myVariable[3]

You need at least an array of 4 char.

So, change it to

   char myVariable[4]

Regards, Alex


0
 
itsmeandnobodyelseCommented:
You may also do this:

     DWORD  dw      = 0x12345678;
     unsigned char* pc = (unsigned char*)&dw;
     unsigned char  c[4];
     c[3] = pc[0];
     c[2] = pc[1];
     c[1] = pc[2];
     c[0] = pc[3];

Your request is equivalent to turn the byte order of the storage from little-endian to big-endian.

So you may use sockets helper function htonl that made the same

     DWORD  dw      = 0x12345678;
     dw = htonl(dw);
     unsigned char* pc = (unsigned char*)&dw;

Regards, Alex


   

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now