• ベストアンサー

HEXを文字に変換するには

お世話になります。初心者です。 VCC++ 6.0, XPで開発してます。 今、unsinged char型で定義したbという引数に入っているHEXの「0x02」を、CString型で定義したRXbという引数に「02」という文字として変換し、その「02」をエディタ上で「02」と表示したいのですが、sscanfなどを使った場合、どのように書けばいいのでしょうか。 また、sscanf以外で、変換できる方法があればご教示いただけますでしょうか。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

CString型を使っているのであれば、Format()メソッドを使用すればいいでしょう。 たとえば unsigned char b = 0x02; CString RXb; RXb.Format("%02d", b); // 10進数の場合 RXb.Format("%02x", b); // 16進数の場合 です。

cpptext
質問者

お礼

ありがとうございます!!! できました!! ほっとしました。 感謝感謝です。 ありがとうございました。 また勉強に励みます。

その他の回答 (1)

  • imogami
  • ベストアンサー率50% (7/14)
回答No.2

RXb.Format("%02d",static_cast<int>(b));

cpptext
質問者

お礼

Format関数を使うんですね。 ありがとうございます!!

関連するQ&A

  • 1Byte→Hex文字列変換がうまく行かない。

    PICマイコン用にCを勉強中です。 1Byte→Hex文字列変換関数を作ろうとしています。 メモリを出来るだけ使いたくないのでコンパイル後のメモリを極少なくするようにしたいと思い以下のようなコードを書きましたが、うまくいきません。 void ByteToHex(unsigned short b, char *p) {   unsigned short t;   t = b >> 4   *p = t + (t < 10 ? 0x30 : 0x41);   t = b & 0x0f;   *(p+1) = t + (t < 10 ? 0x30 : 0x41);   *(p+2) = 0; } (p+2):ポインタのアドレスは加減算できるんかな?? ちなみに使っているコンパイラは"mikroC"です。

  • 文字の書式変換に関して

    初心者です。 文字の書式変換に関してよくわからないので質問いたします。 int pandegree=15; PANdegree[4]={0x00,0x00,0x00,0x00}//初期化 sprintf(PANdegree,"%04x",pandegree);//pandegreeを4桁16進数に変換して文字列PANdegreeに格納 この時点でPANdegreeに16進数4桁の値が以下のように入っています。 PANdegree[0]=0; PANdegree[1]=0; PANdegree[2]=0; PANdegree[3]=0; これをこのまま16進数として1文字ずつ別の文字列char pantiltに代入したいのですが、 char pantilt[10]={0x81,0x01,0x06,0x02,0X10,0X10,0X00,0X00,0X00,0X00,0XFF}; pantilt[6]=PANdegree[0]; pantilt[7]=PANdegree[1]; pantilt[8]=PANdegree[2]; pantilt[9]=PANdegree[3]; この時点で、PANdegree[0],PANdegree[1],PANdegree[2],PANdegree[3]に入っている文字は、%C(1文字)として認識されているのでしょうか? これを%Xとして認識させることはできませんでしょうか? まったくの初心者なので、勘違いだらけの質問かもしれませんがどうぞよろしくお願いいたします。 開発環境は Windows XP Visual Studio2005 C++ です

  • 16進数関数のhex関数について

    16進数を扱う、「hex」という関数があったようななかったような・・・。 16進数の文字列を、例えば、「"0a"」という文字列が あって、この"0a"の前に"0x"という文字列を付け足して"0x0a"とし、この"0x0a"を10という整数値に変換したいのですが、どのようなソースファイルになりますか。 初心者なので、どうプログラムを組んで良いのか分かりませんでしたので、教えて下さい。

  • 文字型変換

    開発環境 XP Home Edtion Microsoft Visual C++ 2008 Express Edition PSTR型からString型に変換したいですが PSTR strText; char *ree; ree=(char*)strText; String^ data; data=gcnew String(ree); このままだとchar型なので1文字しか入りません どのようにしたら何文字も入るようにできますか? 知識不足なところも多々あると思いますがよろしくお願いします。

  • VC++にてCString型のフルパスをfopenする

    VC++(VisualStudio2005)にてCString型のフルパスをfopenしたいと思っています。 他ページでは char *name = new char[filepass.GetLength()+1]; strcpy( name, filepass ); でstrcpyでCstring→charへ変換できるとあったのですが、 'strcpy' : 2 番目の引数を 'CString' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。 というエラーをはいて実行できませんでした。 lstrcpy(name, filepass)でも 1 番目の引数を 'char [100]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 となりました。 何か良い方法をご存じないですか? char型に変換できなくとも、結果的にfopenを使ってファイルオープンできれば良いです。

  • 変数の中身を文字列に変換ってできますか?

    void func(int x) {  puts(&&&&&(x)); } こんな風にして、func という関数の引数に1が与えられたら、 putsを実行できるように1を文字列(つまり"1")に 変換してくれる&&&&&(x)という関数あるいは マクロが作成できないでしょうか? この質問をした目的は、変数の値によって、たくさんある ファイルのどれを開くか決定したいという所からきました。 fopen の引数が char *abc なんですもの。

  • int → char → string の変換

    お世話になります。 現在 VisualStudio2005 C# のコンソールアプリを作っています。 以下の場合どのようにすれば解決しますでしょうか? int code = 0xF97E; // この値をF97Eという文字(外字)にしたい 以下のように記述してみましたが、駄目でした。 int hex1 = ((code & 0xff00) >> 8); // (hex1==0xF9)になる int hex2 = (code & 0x00ff); // (hex2==0x7E)になる string s = char.ToString((char)hex1) + char.ToString((char)hex2 )); // (s==u~==0x757E)になってしまう。 原因がわかる方いらっしゃれば教えてください。

  • C言語:小文字を大文字に変換する関数を作成

    C言語超初心者です。学校の課題で次のような問題が出されました。 ・問題・ 次に挙げる縛りに沿い、以下の関数とメイン関数を作り、処理結果を画面に作成しなさい。 char *tst(char *str) ・strの中の文字列も小文字を大文字に変換し、変換した文字列が格納されているchar *に返す。 ・引数strの中の文字列は受け取った状態で手を加えない。 ・関数内でmalloc関数を使用し、領域を確保して大文字に変換した文字列を格納しreturnでポインタを返す。 ・malloc関数を使用する。 ---------------------------------------------------------------------------------- 大文字に変換するには while(*str != '\0') { if(*str >= 'a' && *str <= 'z') { *str -= 'a'- 'A'; } ++str; } というのは分かったのですがここから何をすするか全く分かりません。初心者なのでなるべく分かりやすく教えてもらえると有難いです。 お願いします。

  • CStringをwchar_tに変換したい

    CStringをwchar_tに変換したく思い、ネットで探したところ、 http://msdn2.microsoft.com/ja-jp/library/ms235631(VS.80).aspx のページを見つけたので、下記のプログラムを組んで実行してみましたがエラーになって しまいます。 【プログラム】 CString orig("Hello, World!"); // Convert to a char* const size_t newsize = 100; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); 【エラー】 error C2664: 'strlen' : 1 番目の引数を 'CString' から 'const char *' に変換できません。 error C2664: 'mbstowcs_s' : 4 番目の引数を 'CString' から 'const char *' に変換できません。 &CStrinをconst char *でキャストしてもうまくいきません。 どこがおかしいのでしょうか? 【環境】 WindowsXP+VC++2005

  • sscanfの16進出力の逆処理

    sscanfを使って char str[2]; int i; sscanf (str, "%x", &i) といった感じで文字列数値を16進に変換出来ますが 逆に16進を文字列数値に一発で変換する方法はないでしょうか 一発で出来なくてswitchなどで処理するしかないのでしょうか わかっている人には初歩的な質問かもしれないですが よろしくお願いします

専門家に質問してみよう