如何将char *复制到16个字节的数组。
const char *SK = "1234456789999978";
sample_aes_gcm_128bit_key_t alice[16];
memcpy(alice, (sample_aes_gcm_128bit_key_t*)SK, 16); //gives error
sample_aes_gcm_128bit_key_t
的定义typedef uint8_t sample_aes_gcm_128bit_key_t [16];
错误: 错误:在'('标记之前)的预期构造函数,析构函数或类型转换 memcpy(alice,(sample_aes_gcm_128bit_key_t *)SK,16);
答案 0 :(得分:0)
这对我有用:
#include <iostream>
#include <cstring>
int main()
{
typedef int sgx_aes_gcm_128bit_key_t;
const char *SK = "1234456789999978";
sgx_aes_gcm_128bit_key_t alice[16];
std::copy(SK, SK + strlen(SK), alice);
for(auto& i : alice){
std::cout << i - '0';
}
return 0;
}
请注意您的typedef
名称与您使用的名称相匹配。 (它没有问题。)你可以删除演员sgx_aes_gcm_128bit_key_t
。希望这能完成你想要做的事情。
答案 1 :(得分:0)
如果你想使用memcpy和C ++,这是完全可能的。在memcpy中你应该使用强制转换为(void *)
memcpy((void*)alice, (void*)SK, 16);
确保正确获取类型和大小以防止分段错误。