converting a std::string to BYTE[16]

hi,
i need some help in convert a std::string to BYTE[16]. does anyone have any idea on how to do so? thanks!

-ashrobo
ashroboAsked:
Who is Participating?
 
AxterCommented:
jkr,
I think you're method is safer then the code used for the previous strncpy method.
But just to add a little more efficientcy you could remove the memset, and add a nullifier after copying the string:
Example:

memcpy ( b, s.c_str(), unLen > sizeof(b) ? sizeof(b) : unLen);
b[unLen] = 0;
0
 
mnashadkaCommented:
If you need to create a new variable, you can cast the BYTE array to a char * and use strncpy to get the value:
  BYTE bytes[16] = {0};
  std::string str = "hello";
  // Copy up to 16 characters into bytes
  strncpy((char *)bytes, str.c_str(), 16); // You could also use reinterpret_cast here

If you need to just use an existing variable in a function call, you can cast the string.c_str() to a BYTE *, but this could be an issue if the size is wrong:
myfunc((BYTE *)str.c_str()); // You could also use reinterpret_cast here

Hope this helps.
0
 
AxterCommented:
>>myfunc((BYTE *)str.c_str());
FYI:
This method would be unsafe, since you're removing the constantness from the pointer.
Recommend putting the constant into the cast:
myfunc((const BYTE *)str.c_str());
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

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.

 
jkrCommented:
BYTE b[16];
string s = "12345678";
unsigned int unLen = s.size();
memset ( b, 0, sizeof(b));
memcpy ( b, s.c_str(), unLen > sizeof(b) ? sizeof(b) : unLen);
0
 
AxterCommented:
Correction:

memcpy ( b, s.c_str(), unLen > sizeof(b) ? sizeof(b) : unLen);
if (unLen < sizeof(b)) b[unLen] = 0;
0
 
mnashadkaCommented:
>>Recommend putting the constant into the cast:
>>myfunc((const BYTE *)str.c_str());

Axter, I agree typically, but that depends upon whether the function takes a const or not.  I was assuming that the function took a BYTE * as a parameter, at which point putting the const there will just make you have to do a const_cast or whatever.  Even if it should be const in the function prototype, there are a lot of programmers out there who, for one reason or another (usually training), don't make the parameter const in the function.
0
 
ashroboAuthor Commented:
i'm sorry for not replying, i haven't had the time to try the solutions provided. how can i deal with this?
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.

All Courses

From novice to tech pro — start learning today.