2011-01-15 4 views
0

ヘックスダンプを変換する方法はありますか? aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 2つの16進数がすべてcharになるように、cの文字列に?もしそうなら、何?Hexdumpをcの文字列に変換する

+5

あります。 – BatchyX

+0

まあそれは= = | –

+3

ちょうど文字列をデコードしましたchar * str = "誰かがいくつかの担当者のために私の宿題をもっと行います:-)"; –

答えて

3

はstdinと印刷物からstdoutに読み込み:

int main() 
{ 
    int ch; 
    while(scanf("%2x", &ch) == 1) 
     putchar(ch); 
} 

私はあなたが特定の送信元と送信先の要件について簡単に自分でそれを修正することができると思います。

0

scanfを%hhxと繰り返し使用します。 man scanfを参照してください。

+1

%hhxはC89ではありません – user411313

3

方法の一つ:もちろん

size_t unBytes = strHex.size()/2; 
std::string strResult(unBytes, 0); 
for (size_t i = 0; i < unBytes; ++i) 
{ 
    std::istringstream in(strHex.substr(2*i, 2)); 
    int byte = 0; 
    in >> std::hex >> byte; 
    strResult[i] = byte; 
} 
+0

あなたは私を持っています - これは冗談であるかどうかわかりません。 –

+0

@j_random_hacker:それはC++です)もちろん、はるかに短く高速化することができます。私はちょうど私のプログラムの1つからそれをコピー貼りました – ssmir

+0

@ Nawazありがとう。もともとunStartとunEndにはこの良い解決策のためにいくつかのオフセットがあった – ssmir