uint8_t
最初に、この配列をchar
cの配列に変換したいと思います。私はこの問題を解決しようとして少し立ち往生しています。私の最初の代替ソリューションは、別の型の値を一時的な値にコピーし、tmp 値を書き込み可能な char にコピーしてから、メモリから tmp 値を削除することです。ちなみに、これは blake ハッシュ関数に付随するために使用されます。ここに私のコードスニペットがあります:
char * bl(char *input)
{
uint8_t output[64];
char msg[]= "";
char *tmp;
int dInt;
memset(output,0,64);
tmp = (char*) malloc(64);
if (!tmp){
exit( 1);
}
dInt = strlen(input);
if (dInt > 0xffff){
exit( 1);
}
uint8_t data[dInt];
memset(data,0, dInt);
strlcpy(data,input,dInt);
uint64_t dLen =dInt;
blake512_hash(output, data,dLen);
int k;
for (k=0;k<64;k++){
tmp[k] = output[k]; //does this "copy" is buggy code?
}
memcpy(msg, tmp,64);
//so here I can to delete tmp value
// I dont want there were left unused value in memory
// delete tmp;
free(tmp);
return msg;
}
上記のコードはまだ効率的ではないと思います。あなたの意見、ヒント、および修正は何ですか? 以前はありがとうございました!