unsigned charをunsigned intに変換して配列に格納する関数を作成します。しかし、これは、互換性のないポインタ型から 'sprintf'の引数1を渡すと、unsigned char(配列)をunsigned int(配列)に変換する
というエラーが発生します。
int main(void) {
unsigned char key[16] = "1234567812345678";
phex(key, 16); //store into an array here
}
uint64_t* phex(unsigned char* string, long len)
{
uint64_t hex[len];
int count = 0;
for(int i = 0; i < len; ++i) {
count = i * 2;
sprintf(hex + count, "%.2x", string[i]);
}
for(int i = 0; i < 32; i++)
printf(hex[i]);
return hex;
}
あなたは16個の整数要素の配列をしたい、と各要素が一つだけの数字を保持していますか? – Rorschach
'sprintf'は、整数を文字表現に変換します。逆順ではありません。 –
A [*** sprintfとprintfの両方についての良いリファレンス](http://en.cppreference.com/w/ c/io/fprintf)が役立つはずです。 –