unsigned charを16進(unsigned intを使用)に変換したいと考えています。これはこれまでの私のコードです。私はunsigned char配列を生成するprogram1を持っていて、他のprogram2はunsigned intを使っているだけの16進数しか取らないので、無関係なchar配列の入力を得て、その配列を16進数に変換します。
(例えば、プログラム1出力 "1234567812345678"、PROGRAM2べきで出力 "31323334353637383132333435363738")
申し訳ありませんが、この質問は、ダムと思われる場合。ここでの答えを見てみましたが、私の望むものではありませんでした。符号なし文字配列を16進数に変換する
uint64_t phex (unsigned char[16], long);
int main (void) {
int i;
unsigned char key[16] = "1234567812345678";
uint64_t* keyHex = phex(key,16); //store into an array here
for(i = 0; i < 16; i++)
printf("%.2x ", keyHex[i]);
free(keyHex);
return 0;
}
uint64_t phex(unsigned char* string, long len)
{
int i;
//allocate memory for your array
uint64_t* hex = (uint64_t*)malloc(sizeof(uint64_t) * len);
for(i = 0; i < len; ++i) {
//do char to int conversion on every element of char array
hex[i] = string[i] - '0';
}
//return integer array
return hex;
}
[ 'malloc'におけるCの結果をキャストしない]を(http://stackoverflow.com/q/605845/995714)16進数で –
' 0x1234567812345678'は '小数で1311768465173141112'あります。私はあなたが '31323334353637383132333435363738'を取得するか分からない。たぶん、バイナリデータを16進文字列表現に変換したいのですか? –
@BarmakShemirani 1234567812345678(10進数)を16進数に変換する31323334353637383132333435363738です。 – vivola