Possible Duplicate:
C++ style cast from unsigned char * to const char *
I have the unsigned char* digest;
which is the output of a program and i would like to pass it to a char* S1;
I type char* S1=digest;
and does not work
Possible Duplicate:
C++ style cast from unsigned char * to const char *
I have the unsigned char* digest;
which is the output of a program and i would like to pass it to a char* S1;
I type char* S1=digest;
and does not work
The simple answer: You need to cast it: reinterpret_cast<unsigned char*>(digest)
However, in this case you need to be aware that unsigned char* and char* are not really the same thing unless all elements in the array are less than 128.
char * either represents values from -128 to 127 (signed) or 0 to 255 (unsigned), the other always values from 0 to 255.
digest functions by their nature are likely to return values between 0 and 255, inclusive, in the result.
Also, the fact that the array might very well include null characters (the question does not really specify where the digest is coming from) many functions that accept char * or unsigned char* are likely to fail, since they assume the char* is a string (which it is not, really, if it is a binary digest of (presumably) fixed size)
It's because unsigned char
and char
(which is really signed char
in your compiler) are different. You have to make an explicit typecast:
char* S1 = reinterpret_cast<char*>(digest);
Char types are layout compatible, so if you know what you're doing, you can simply force the pointer with a reinterpreting cast:
char * s1 = reinterpret_cast<char *>(digest);
C style cast: s1=( char *)digest;
C++ style cast: s1= reinterpret_cast<char *>(digest);
#include <iostream>
using namespace std ;
int main(void)
{
unsigned char* digest;
char * s1c,*s1cpp;
//C style cast
s1c=( char *)digest;
//C++ style cast
s1cpp= reinterpret_cast<char *>(digest);
cout<<" \nPress any key to continue\n";
cin.ignore();
cin.get();
return 0;
}