2017-02-17 175 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 *必须*返回一些东西,否则它是未定义的行为。 –