0

I have a cstring object str = "5043", now i want to convert to Hex and put it in UCHAR array like

UCHAR sample[2];
Sample[0] = 0X50 
Sample[1] = 0X43

How can i do this? please advice me

2
  • This might have already been answered in this thread: stackoverflow.com/questions/3381614/… Commented Apr 20, 2012 at 8:13
  • As a possibility for widening the scope of this question, "cstring object str" -> "string". "UCHAR" -> "unsigned char", then just leave this as a C++ question. Commented Apr 20, 2012 at 8:46

3 Answers 3

1

You can scan the hex values directly from the string using sscanf(), something like below:

UCHAR sample[2];
for ( int i = 0; i < str.length() / 2 ; i++) {
    sscanf( (str.substr(i*2,2)).c_str(), "%hx", &sample[i]);
}

h is for short and x is for hexadecimal obviously.

Also, this assumes that the UCHAR array is declared to be half as large as the string size.

Sign up to request clarification or add additional context in comments.

Comments

1

Have you tried strol? It seems a little low tech, but should do the trick. Don't forget to pass 16 as the base...

You'll need to combine it with a little bit shifting and bitwise anding to split the result into exactly what you require, but that should be straightforward.

Hope this helps,

2 Comments

Actually, i have already got converted value but i just need to update to UCHAR variable
Hmm, in that case, I think you need a different question! i.e. How do I split an integer into two bytes? (For a sixteen bit value) You probably need to right shift 8 bits for the high byte and bitwise and (&) with 255 for the low byte.
0

To make your code simpler, you may use an union, e.g.

    union
    {
    UCHAR char_val[2];
    long long_val;
    };

    CString str = "5043";
    long_val = strtol(str.GetString(), nullptr, 16);
    // use char_val here

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.