Di certo dati di quel genere non li puoi mettere in una variabile numerica, sono decisamente troppo grandi. Per copiarli in generale ad una qualche locazione di memoria puoi usare una roba del genere (adattato da questo mio codice):
codice:
//Convert a hexadecimal string to its corresponding byte sequence; returns the number of bytes written
int HexToByte(const char * HexString, void * Out, size_t MaxOut)
{
        unsigned char * castedOut=(unsigned char *)Out;
        size_t hslength=strlen(HexString);
        //Length check
        if(hslength>MaxOut*2)
                return -1;
        if(hslength%2!=0)
                return -2;
        //Convert the string
        const char * readPtr=HexString.c_str();
        for(unsigned char * writePtr=castedOut;
                writePtr<castedOut+hslength/2;
                writePtr++,readPtr+=2)
        {
                int ret=getByte(readPtr);
                if(ret<0)
                    return -3;
                *writePtr=ret;
        }
        return hslength/2;
}

//Returns a byte from a pair of hexadecimal digits
int getByte(const char * str)
{
        unsigned char ret=0;
        char ch;
        for(int i=0;i<2;i++)
        {
                ch=toupper(str[i]);
                if(ch>='0' && ch<='9')
                        ret|=(ch-'0')<<((1-i)<<2);
                else if(ch>='A' && ch<='F')
                        ret|=(ch-'A'+10)<<((1-i)<<2);
                else
                        return -1;
        }
        return ret;
}