Reputation: 9634
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
Upvotes: 0
Views: 1616
Reputation: 8604
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
Upvotes: 0
Reputation: 1343
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.
Upvotes: 1
Reputation: 3941
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,
Upvotes: 1