2017-08-07 38 views
0

私は文字列16進数を持っています。 std :: string x = "68656c6c6f"; それを文字の配列に変換したい 配列の各要素は2つの16進数の です。16進文字列から16進文字列への変換

char c[5]={0x68,0x65,0x6c,0x6c,0x6f} ; 

私はC++を使用している、と私はすでに、16進数の文字列を持っていると私は文字の配列として値を読み取るためのオプションを持っていません。 私はこれがかなりある(あなたがあなた自身を試してみました、またはあなたが研究してきたもの、またはあなたが困惑している理由は何示すべきであるscanf("%x",&c[i]);

+0

を使用することはできません多数の可能な解決策で簡単な問題)。今あなたの "質問"は "私の仕事をどうしてください"か "これを行う方法についてあいまいなヒントがほしい"、どちらもスタックオーバーフローには適していません。 – hyde

+2

また、CまたはC++?彼らは異なる言語です。 1つのタグを削除してください。あなたが 'std :: string'を意味するなら、' string'はC++です。 – hyde

+0

ヒント: 'std :: stoi'とそれに類するものを見てください。 –

答えて

0

C(およびC++で動作します)

int cnvhex(const char *num, int *table) 
{ 
    const char *ptr; 
    int index = (num == NULL || table == NULL) * -1; 


    size_t len = strlen(num); 

    ptr = num + len - 2; 
    if (!index) 
    { 
     for (index = 0; index < len/2; index++) 
     { 
      char tmp[3] = { 0, }; 

      strncpy(tmp, ptr, 2); 
      if (sscanf(tmp, "%x", table + index) != 1) 
      { 
       index = -1; 
       break; 
      } 
      ptr -= 2; 
     } 
     if (index != -1 && (len & 1)) 
     { 
      char tmp[2] = { *num, 0}; 

      if(sscanf(tmp, "%x", table + index++) != 1) index = -1; 
     } 
    } 
    return index; 
} 
関連する問題