2017-02-17 173 views
0

如何轉換 '爲const char *' 到 'const的無符號字符*'如何 '爲const char *' 轉換爲 'const的無符號字符*'

bool AES(const uint8_t *Data, size_t Size) { 
    std::string s(reinterpret_cast<const char *>(Data), Size); 
    AES_cbc_encrypt(s.c_str(), enc_out, Size, &enc_key, iv, AES_ENCRYPT); 
    } 

錯誤了,而程序編譯

candidate function not viable: no known conversion from 'const char *' to 'const unsigned char *' 
     for 1st argument 
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 

我想這不工作

std::string s(reinterpret_cast<const unsigned char *>(Data), Size); 
+6

你爲什麼不將'Data'傳遞給'AES_cbc_encrypt'? – Sneftel

+0

'std :: string'是'std :: basic_string ',所以你可能需要'std :: basic_string ',但無論如何,你爲什麼需要臨時字符串對象? – myaut

+0

太棒了這工作就像一輛車@Sneftel – anish

回答

1

uint8_tif it's available,只是一個typedef到unsigned char。因此,您可以這樣做:

bool AES(const uint8_t *Data, size_t Size) { 
    AES_cbc_encrypt(Data, enc_out, Size, &enc_key, iv, AES_ENCRYPT); 
} 

請注意,您應該也可以在函數中返回某些內容。

+0

OP *必須*返回一些東西,否則它是未定義的行爲。 –