C言語関係掲示板

過去ログ

No.1314 Hexデータから文字型への変換

[戻る] [ホームページ]
No.17687

Hexデータから文字型への変換
投稿者---電話番(2004/11/01 17:47:27)


いつもお世話になっています。

すごく初歩的なことかも知れないのですが

16進数の戻り値を文字型に変換し配列に格納するにはどのように
したらいいか分かりません。

#include "stdafx.h"

void hexprint(unsigned char*,unsigned char *);

int main(int argc, char* argv[])
{
    unsigned char buf2[15];
    unsigned char pstr[]={0x12,0xaf,0x89,'\0'};

    hexprint(pstr,buf2);
    
    printf("%c",buf2);

    return 0;
}

void  hexprint(unsigned char* strhex,unsigned char* outp)
{
    unsigned char shift;
    unsigned char upstr;
    unsigned char downstr;
    int i,j;


    while(*strhex!='\0')
    {
        shift = *strhex;
        upstr = (shift >>4);
        *outp = upstr + '0';
        outp++;
        downstr= (shift & 0x0f);
        *outp = downstr + '0';
        printf("%c =",*outp);   /*変換を見るために出力*/
        printf("%x \n\n ",*outp);
        outp++;
        strhex++;
    };
};

なのですが、Hexprintという関数では無条件に'0'を足して
文字列に変換しているのですが、a以降うまく行きません。

どなたかご教授願えますでしょうか。




No.17689

Re:Hexデータから文字型への変換
投稿者---επιστημη(2004/11/01 17:51:47)


× *outp = upstr + '0';
○ *outp = "0123456789abcdef"[upstr];

もう一箇所も同様。



No.17691

Re:Hexデータから文字型への変換
投稿者---電話番(2004/11/01 17:57:13)


早速やってみました!!

すごいです!出来ました!
ありがとうございました。


No.17697

Re:Hexデータから文字型への変換
投稿者---nop(2004/11/01 21:12:58)


sprintf()ではだめなの?


No.17711

Re:Hexデータから文字型への変換
投稿者---電話番(2004/11/02 09:15:40)


ご返答ありがとうございます。

sprintfでもできました!
ソースは16進から文字列への変換個所が

sprintf((char*)outp,"%x",upstr);

でも出来ました。

επιστημηさん、nopさん
ありがとうございました。